第三章:查詢與排序(下)----------- 3.11 趣味擴充_尋找發帖水王
程式設計之美_尋找發帖水王:
變化:出現的次數恰好為個數的一半,求這個數。
關於加強版水王的題,可以通過掃描一遍陣列就能解決問題:
水王佔總數的一半,說明總數必為偶數;
不失一般性,假設每隔一個數就是水王的id,兩兩不同最後一定會消為0;
水王可能是最後一個元素,每次掃描到時候,多一個動作,和最後一個元素作比較,單獨計數,計數恰好為一半;
如果不是,那麼去掉最後一個元素,水王就是留下來的那個candidate
#include <iostream>
#include<algorithm>
using namespace std;
void waterKing(int arr[],int length){
int candidate=arr[0];
int nTime=0;
int countOfLast=0;//統計最後這個元素出現的次數
int N=length;
for(int i=0;i<N;i++){
//增加與最後一個元素比較的步驟
if(arr[i]==arr[N-1]){
countOfLast++;
}
if(nTime==0){
candidate=arr[i];
nTime=1;
continue;
}
if(arr[i]==candidate){
nTime++;
}
else{
nTime--;
}
}
//最後一個元素出現的次數是n/2
if(countOfLast==N/2){
cout<<arr[N-1];
}
else{
cout<<candidate;
}
}
int main()
{
int arr[]={1,3,5,2,1,3,1,1};
waterKing(arr,8);
return 0;
}
結果:
相關文章
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- 第三章:查詢與排序(下)----------- 3.19 計數排序排序
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 第三章:查詢與排序(下)----------- 3.23 相關題解:排序陣列中找和的因子排序陣列
- 第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)排序函式
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 第三章:查詢與排序(下)----------- 3.14 逆序對個數排序
- 第三章:查詢與排序(下)----------- 3.16堆的概念及堆排序思路排序
- Linq查詢語法與擴充方法
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- 第三章:查詢與排序(下)----------- 3.12 實踐_最小可用id是多少排序
- 第三章:查詢與排序(下)----------- 3.22 總結:10種排序演算法的對比分析排序演算法
- 第三章:查詢與排序(下)----------- 3.27 用計數排序解決員工年齡問題排序
- 第三章 :查詢與排序-------3.2你需要掌握的快速排序演算法排序演算法
- 第三章:查詢與排序(下)----------- 3.29 題解:判斷陣列的包含問題排序陣列
- 第三章 :查詢與排序(下)-------3.1分治法介紹及關鍵點解析排序
- 第三章 :查詢與排序-------3.7分治模式的完美詮釋_歸併排序排序模式
- Laravel MongoDB 資料庫查詢擴充外掛 擴充原始 Laravel 類LaravelMongoDB資料庫
- 第三章:查詢與排序(下)----------- 3.9 最快效率求出亂序陣列中第k小的數排序陣列
- 第三章 :查詢與排序-------3.5快排之三指標分割槽法排序指標
- 第三章 :查詢與排序-------3.6快排在工程實踐中的優化排序優化
- 分頁查詢及其擴充應用案例
- 第三章:查詢與排序(下)----------- 3.10 實戰解題_哪個數字超過了一半?排序
- 第三章 :查詢與排序-------3.4快排之雙向掃描分割槽法排序
- 第二章 :查詢與排序-------希爾排序排序
- 尋找一種易於理解的一致性演算法(擴充套件版)下演算法套件
- 第三章:查詢與排序(下)----------- 3.25 知其然知其所以然:小頂堆與topK的具體程式碼實現排序TopK
- 第三章:查詢與排序(下)------------- 3.8題解_調整陣列順序-奇數在左偶數在右排序陣列
- 排序和查詢排序
- jQuery 條件搜尋查詢 實時取值 升降序排序jQuery排序
- 搜尋/查詢
- Dcat Admin 表格排序擴充套件排序套件
- 智慧手環下發尋找裝置指令
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- 第三章(三自學)擴充套件套件
- Oracle 12CR2查詢轉換之表擴充套件Oracle套件
- 在EF Core 中使用AsQueryable擴充套件方法的拼接查詢套件
- Mybatis之map操作使用者和模糊查詢擴充套件MyBatis套件