寻找数组中的重复数字(java,可执行程序)
生活随笔
收集整理的這篇文章主要介紹了
寻找数组中的重复数字(java,可执行程序)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package Array;import java.util.ArrayList;
import java.util.Arrays;public class ex3_2 {public static void main(String[] args) {class Duplication {
//************************************①找到一個重復(fù)的數(shù)字,低時間復(fù)雜度,借助輔助數(shù)組********************************//
// int FindOneRepNumT(int[] a) {
// int n=a.length;
// for (int i=0;i<n;i++) {
// if ((a[i]<1)||(a[i]>n-1))
// return -1;//數(shù)組元素不合法
// }
// if(n<=0)
// return -3;//數(shù)組長度不合法
// int result=0;
// int[] temp=new int[n];
// for(int i=0;i<n;i++) {
// if(temp[a[i]-1]==0) {
// System.out.println(Arrays.toString(temp));
// temp[a[i]-1]=a[i];
// }
// else {
// result=a[i];
// System.out.println(result);
// return result;
// }
// }
// return -2;//沒有重復(fù)元素
// }
//************************************②找到所有重復(fù)的數(shù)字,低時間復(fù)雜度,借助輔助數(shù)組********************************//
// ArrayList FindAllRepNumT(int[] a) {
// int n=a.length;
// int[] temp=new int[n];
// ArrayList none=new ArrayList<>();
// ArrayList all=new ArrayList<>();
// for (int i=0;i<n;i++) {
// if ((a[i]<1)||(a[i]>n-1)) {
// ArrayList En=new ArrayList<>();
// En.add(-1);
// return En;//數(shù)組元素不合法
// }
// }
// if(n<=0) {
// ArrayList Le=new ArrayList<>();
// Le.add(-2);
// return Le;//數(shù)組元素不合法
// }
// for(int i=0;i<n;i++) {
// if(temp[a[i]-1]==0) {
// temp[a[i]-1]=a[i];
// }
// else {
// all.add(a[i]);
// }
// }
// return all;
// }
//************************************③找到任一重復(fù)數(shù)字,低空間復(fù)雜度,類似二分********************************// int CountNum(int[] a,int start,int end) {//計算數(shù)組a中[start,end]閉區(qū)間的元素個數(shù)int n=a.length;int count=0;for (int i=0;i<n;i++) {if((a[i]<=end)&&(a[i]>=start))count++;}return count;}int FindOneReapNumS(int[] a) {int n=a.length;int start=1;int end=n-1;if(n<=0)return -2;for (int i=0;i<n;i++) {if ((a[i]<1)||(a[i]>n-1))return -1;}while(start<=end) {int m=(end-start)/2+start;int count1=CountNum(a,start,m);if (end==start) {if(count1>1)return end;elsebreak;}if(count1>(m-start+1)) end=m;else {start=m+1;}}return -3;}//************************************④找到所有重復(fù)數(shù)字,低空間復(fù)雜度********************************// int FindAllReapNumS(int[] a) {//待補(bǔ)充return 0;}} Duplication d=new Duplication();int[]a= {1,2,2,3,3,4};
//************************************測試********************************//
// int fOT=d.FindOneRepNumT(a);
// switch(fOT) {
// case -1:
// System.out.println("One時間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組元素不合法");
// break;
// case -2:
// System.out.println("One時間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組長度不合法");
// break;
// case -3:
// System.out.println("One時間復(fù)雜度比較低的算法測試結(jié)果:沒有重復(fù)元素");
// break;
// default:
// System.out.println("One時間復(fù)雜度比較低的算法測試結(jié)果:重復(fù)的數(shù)字是"+fOT);
// }
//************************************測試********************************//
// ArrayList fAT=new ArrayList<>();
// fAT=d.FindAllRepNumT(a);
// int fATSize=fAT.size();
// fAT.trimToSize();
// Integer[] result=new Integer[fAT.size()];
// fAT.toArray(result);
// int flag;
// if(result[0]==-1)
// flag=-1;
// else if(result[0]==-2)
// flag=-2;
// else if(fATSize==0)
// flag=-3;
// else flag=-4;
// switch(flag) {
// case -1:
// System.out.println("All時間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組元素不合法");
// break;
// case -2:
// System.out.println("All時間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組長度不合法");
// break;
// case -3:
// System.out.println("All時間復(fù)雜度比較低的算法測試結(jié)果:沒有重復(fù)元素");
// break;
// default:
// System.out.println("All時間復(fù)雜度比較低的算法測試結(jié)果:重復(fù)的數(shù)字是"+Arrays.toString(result));
// }
//************************************測試********************************// int fOS=d.FindOneReapNumS(a);switch(fOS) {case -1:System.out.println("One空間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組元素不合法");break;case -2:System.out.println("One空間復(fù)雜度比較低的算法測試結(jié)果:數(shù)組長度不合法");break;case -3:System.out.println("One空間復(fù)雜度比較低的算法測試結(jié)果:沒有重復(fù)元素");break;default:System.out.println("One空間復(fù)雜度比較低的算法測試結(jié)果:重復(fù)的數(shù)字是"+fOS);}}
}
總結(jié)
以上是生活随笔為你收集整理的寻找数组中的重复数字(java,可执行程序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java右移
- 下一篇: java中方法的参数传递