在乙個排序陣列中求乙個數K出現的次數

2021-08-08 15:50:43 字數 684 閱讀 8936

思路:

1 因為陣列是有序的,因此可以遍歷陣列,遇到比k大的數就終止,時間複雜度o(n)

int getnumberofk(vectordata ,int k) 

}return count;

}

2  利用二分查詢,找到後,可以在小範圍內再查詢

int getnumberofk(vectordata ,int k) 

while(data[high]==k)

break;

}else if(data[mid]>k)else

}return count;

}

3  還是利用二分查詢查詢

int getnumberofk(vectordata ,int k)

//用遞迴

int getfirstindexofk(vectordata,int k,int start,int end)else if(data[mid]0&&data[mid-1]!=k || mid==0)else

}return getfirstindexofk(data,k,start,end);

}//用非遞迴

int getlastindexofk(vectordata,int k,int start,int end)else if(data[mid]

求乙個數的反序數

package com.laodai author tony 求任意整數的反序數 例如乙個數字54321,反序數就是12345 分析 求反序數,我們需要將乙個個的數字給拆分開。然後再 進行組合就可以達到目的。例如分離出各位的1,那麼我們只需要將54321除以10求他的餘數 就可以了。54321除以1...

統計乙個數字在排序陣列中出現的次數

題目描述 統計乙個數字在排序陣列中出現的次數。輸入 每個測試案例包括兩行 第一行有1個整數n,表示陣列的大小。1 n 10 6。第二行有n個整數,表示陣列元素,每個元素均為int。第三行有1個整數m,表示接下來有m次查詢。1 m 10 3。下面有m行,每行有乙個整數k,表示要查詢的數。輸出 對應每個...

統計乙個數字在排序陣列中出現的次數

題目 統計乙個數字在排序陣列中出現的次數。思路 採用二分查詢的思想,尋找該數字第一次出現的下標和最後一次出現的下標,最後將兩個下標相減加1,便可得出出現的次數。具體的 實現如下所示 public class solution int firstindex getfirstindex array,0,...