d*******X 发帖数: 188 | 1 老说一定要返回int type的数据, 不让通过。eclipse ide.
public static int accOcc(int k, int[] numArr, int inda, int indb){
if(inda>indb)
return 0;
if(numArr[inda]>k || numArr[indb]
return 0;
if(numArr[inda]==k && numArr[indb]==k)
return indb-inda+1;
int midInd = (inda + indb)/2;
if(midInd
return accOcc(k, numArr, midInd+1,indb);
if(midInd==k)
return 1+accOcc(k, numArr, inda, midInd-1)+accOcc(k, numArr,
midInd+1,indb);
if(midInd>k)
return accOcc(k, numArr, inda, midInd-1);
} | z****e 发帖数: 54598 | 2 因为你都是if,没有else
ide检查时候不管你if的条件是什么
只要你这个if没有else配合
就是残缺的
所以你只在if里面写return是不够的
哪怕你么多个if涵盖了所有的可能性 | p*****2 发帖数: 21240 | | d*******X 发帖数: 188 | 4 正解! 拜谢。
【在 z****e 的大作中提到】 : 因为你都是if,没有else : ide检查时候不管你if的条件是什么 : 只要你这个if没有else配合 : 就是残缺的 : 所以你只在if里面写return是不够的 : 哪怕你么多个if涵盖了所有的可能性
| d*******X 发帖数: 188 | 5 见笑了,刚开始练习。改了如下,
public static int accOcc(int k, int[] numArr, int inda, int indb){
if(inda>indb)
return 0;
if(numArr[inda]>k || numArr[indb]
return 0;
if(numArr[inda]==k && numArr[indb]==k)
return indb-inda+1;
int midInd = (inda + indb)/2;
if(numArr[midInd]
return accOcc(k, numArr, midInd+1,indb);
else if(numArr[midInd]==k)
return 1+accOcc(k, numArr, inda, midInd-1)+accOcc(k, numArr,
midInd+1,indb);
else
return accOcc(k, numArr, inda, midInd-1);
}
【在 p*****2 的大作中提到】 : 这段代码写的也够可以的了。
| g*****g 发帖数: 34805 | | p*****2 发帖数: 21240 | 7
你这个代码是个二分搜索骂?
【在 d*******X 的大作中提到】 : 见笑了,刚开始练习。改了如下, : public static int accOcc(int k, int[] numArr, int inda, int indb){ : if(inda>indb) : return 0; : if(numArr[inda]>k || numArr[indb]: return 0; : if(numArr[inda]==k && numArr[indb]==k) : return indb-inda+1; : int midInd = (inda + indb)/2; : if(numArr[midInd]
| d*******X 发帖数: 188 | 8 是的。 大牛有什么建议?
【在 p*****2 的大作中提到】 : : 你这个代码是个二分搜索骂?
| p*****2 发帖数: 21240 | 9
你想解决的是什么问题?
【在 d*******X 的大作中提到】 : 是的。 大牛有什么建议?
| d*******X 发帖数: 188 | 10 简单的查找element重复的次数,array假设是有序的。
【在 p*****2 的大作中提到】 : : 你想解决的是什么问题?
| | | p*****2 发帖数: 21240 | 11 我这么写的。找元素在数组的上下界。
def bs(arr:Array[Int], target:Int, left:Boolean):Int={
var i=0
var j=arr.length-1
while(i
val mid=if(left) i+(j-i)/2 else j-(j-i)/2
if(arr(mid)==target)
if(left) j=mid else i=mid
else if(arr(mid)>target)
j=mid-1
else
i=mid+1
}
j
}
def findCount(arr:Array[Int], target:Int):Int={
if(arr==null || arr.length==0) return 0
val left=bs(arr,target,true)
if(left<0) 0 else bs(arr,target,false)-left+1
} | s********y 发帖数: 62 | 12 这才是IDE不过的原因,虽说写得确实。。。
【在 g*****g 的大作中提到】 : 在最后一行加个缺省的return即可。
| c*********e 发帖数: 16335 | 13 正解。
【在 g*****g 的大作中提到】 : 在最后一行加个缺省的return即可。
| w****u 发帖数: 3147 | 14 ……既然用ide了,为啥不让通过点一下不就知道了……都有hint的啊 | d*******X 发帖数: 188 | 15
【在 g*****g 的大作中提到】 : 在最后一行加个缺省的return即可。
|
|