public class solution
if(first>-1 && last>-1)
return num;
}int getfirstk(int array,int start,int end,int k)else if(middata0 && array[midindex - 1] != k) || midindex == 0)else
}return -1;
}int getlastk(int array,int start,int end,int k)else if(middata k)
high = mid - 1;
else
low = mid + 1;
}if(low <= high)
for(int i = mid + 1;i < array.length;i++)
}return count;
}}runtime:19ms
看到有序,就應該想到二分查詢。找到該數字在陣列中第一次、最後一次出現的位置
**:public class solution
private int getfirstk(int array, int k, int low, int high)
else if(array[mid] > k)
high = mid - 1;
else
low = mid + 1;
}return -1;
}private int getlastk(int array, int k, int low, int high)
else if(array[mid] > k)
high = mid - 1;
else
low = mid + 1;
}return -1;
}}runtime:18ms
思路三:
因為data中都是整數,所以可以稍微變一下,不是搜尋k的兩個位置,而是搜尋(k-0.5)和(k+0.5)這兩個數應該插入的位置,然後相減即可。
需要對二分法的**進行簡單的變形修改。
**:public class solution
private int bisearch(int array, double k)
return low;
}}runtime:16ms
數字在排序陣列中出現的次數39
題目描述 統計乙個數字在排序陣列中出現的次數。例如輸入排序陣列和數字3,由於3在這個陣列中出現了4次,因此輸出4.解題思路 由於是排序,利用二分查詢找到第乙個k的位置 找到最後乙個k的位置 找到第乙個k和最後乙個k之後,就可計算出k在陣列中出現的次數。測試用例 int main 數字3在排序陣列中出...
在排序陣列中查詢數字
題目一 數字在排序陣列 現的次數。統計乙個數字在排序陣列 現的次數。例如,輸入排序 陣列和數字3,由於3在這個數 組 現了4次,因此輸出4。設計乙個改進的二分查詢法,分別查詢陣列中第乙個該數字和最後乙個該數字,找到之後 利用索引計算中間該數字的個數 package helen.c public cl...
在排序陣列中查詢數字
統計乙個數字在排序陣列 現的次數。例如,輸入排序陣列和數字3,由於3在這個陣列 現了4次,因此輸出4。有序陣列,二分查詢 思路 用二分查詢分別找到待找數字的第乙個和最後乙個 class solution def getnumberofk self,data,k number 0 if data no...