int[] pacgagecount = userService.setUsersCharge(cardnumber, pacgageid, httpSession);
for (int i : pacgagecount) {
for (int j : pacgagecount) {
if (pacgagecount[i] == pacgagecount[j]) {
return true;
}
}
}
return false;
我總感覺我寫的這個for回圈怪怪的。
debug的時候,感覺只判斷了pacgagecount【0】==pacgagecount【0】然后就return true了
uj5u.com熱心網友回復:
改成不等于,return false就可以了呀,只要有一個不相等false
uj5u.com熱心網友回復:
這個沒必要弄雙層回圈啊uj5u.com熱心網友回復:
Arrays.sort(arr);return arr[0]==arr[arr.length-1];
2行就搞定了,非那么麻煩干嘛
uj5u.com熱心網友回復:
其實第一行也沒起作用,就直接一行就行了uj5u.com熱心網友回復:
我錯了,還是得2行
uj5u.com熱心網友回復:
Stream.of(pacgagecount).distinct().count()>1uj5u.com熱心網友回復:
pacgagecount【0】==pacgagecount【0】,這個比的是地址吧,用equals試試。uj5u.com熱心網友回復:
全域排序開銷是不是太大了?二分法,陣列分成兩半,每一半比較第一個和最后一個,如果有差異就直接退出了,沒有差異,再分裂成一半的一半,重復這個比較程序
時間復制度O(logN)
uj5u.com熱心網友回復:
int a = pacgagecount[0];
for(int i : pacgagecount){
if(i != a){
return false;
}
}
return true;
類似冒泡,直接遍歷一遍一個一個比較,O(n) 不香么
另外7樓那個,int直接用==比較
8樓那個的時間復雜度也是O(n),而且每次分成兩半還得比較兩半第一個或者最后一個的值
uj5u.com熱心網友回復:
for(int i=0; i<a.length-1; i++) {
for (int j=i+1; j<a.length; j++) { //j從個i+1開始就可以了,因為i以前都比較過了
if (a[i] != a[j]) return false; //如果有一個不同就說明不一致
}
}
return true; //能走到這里就說明全一致uj5u.com熱心網友回復:
修正一下,不用兩重回圈,一重回圈就可以了,如9L的代碼轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61790.html
標籤:Java EE
上一篇:go-檔案操作
下一篇:go-單元測驗
