39 在排序陣列中查詢數字出現的次數

2021-09-09 06:40:45 字數 1160 閱讀 9319

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...