日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

寻找数组中的重复数字(java,可执行程序)

發布時間:2025/5/22 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 寻找数组中的重复数字(java,可执行程序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package Array;import java.util.ArrayList; import java.util.Arrays;public class ex3_2 {public static void main(String[] args) {class Duplication { //************************************①找到一個重復的數字,低時間復雜度,借助輔助數組********************************// // 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;//數組元素不合法 // } // if(n<=0) // return -3;//數組長度不合法 // 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;//沒有重復元素 // } //************************************②找到所有重復的數字,低時間復雜度,借助輔助數組********************************// // 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;//數組元素不合法 // } // } // if(n<=0) { // ArrayList Le=new ArrayList<>(); // Le.add(-2); // return Le;//數組元素不合法 // } // 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; // } //************************************③找到任一重復數字,低空間復雜度,類似二分********************************// int CountNum(int[] a,int start,int end) {//計算數組a中[start,end]閉區間的元素個數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;}//************************************④找到所有重復數字,低空間復雜度********************************// int FindAllReapNumS(int[] a) {//待補充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時間復雜度比較低的算法測試結果:數組元素不合法"); // break; // case -2: // System.out.println("One時間復雜度比較低的算法測試結果:數組長度不合法"); // break; // case -3: // System.out.println("One時間復雜度比較低的算法測試結果:沒有重復元素"); // break; // default: // System.out.println("One時間復雜度比較低的算法測試結果:重復的數字是"+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時間復雜度比較低的算法測試結果:數組元素不合法"); // break; // case -2: // System.out.println("All時間復雜度比較低的算法測試結果:數組長度不合法"); // break; // case -3: // System.out.println("All時間復雜度比較低的算法測試結果:沒有重復元素"); // break; // default: // System.out.println("All時間復雜度比較低的算法測試結果:重復的數字是"+Arrays.toString(result)); // } //************************************測試********************************// int fOS=d.FindOneReapNumS(a);switch(fOS) {case -1:System.out.println("One空間復雜度比較低的算法測試結果:數組元素不合法");break;case -2:System.out.println("One空間復雜度比較低的算法測試結果:數組長度不合法");break;case -3:System.out.println("One空間復雜度比較低的算法測試結果:沒有重復元素");break;default:System.out.println("One空間復雜度比較低的算法測試結果:重復的數字是"+fOS);}} }

總結

以上是生活随笔為你收集整理的寻找数组中的重复数字(java,可执行程序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。