題目描述
陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列**現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
1.可以使用map結構,建立key value 對映表class solution
};
2.對陣列進行排序,如果符合條件的數存在,則一定是陣列中間的那個數。class solution
return 0;
}};
3.如果有符合條件的數字,則這個數字出現的次數比其他所有數字出現的次數都要多。class solution
};
可以採用陣地攻守的思想:
第乙個數字作為第乙個士兵,守陣地;count = 1;
遇到相同元素,count++;
遇到不相同元素,即為敵人,同歸於盡,count–;當遇到count為0的情況,又以新的i值作為守陣地的士兵,繼續下去,到最後還留在陣地上的士兵,有可能是主元素。
再加一次迴圈,記錄這個士兵的個數看是否大於陣列一般即可。
class solution
};
28 陣列中出現次數超過一半的數
陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。解法一陣列排序後,如果符合條件的數存在,則一定是陣列中間那個數。比如 1,2,2,2,3 或2,2,2,3,4 或2,3,4,4...
28 陣列中出現次數超過一半的數字
陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。思路 我們設定乙個用於記錄數字num出現次數的變數,如果陣列的下乙個元素等於當前num,那麼次數就加1,否則次數減1。如果次數減小...
陣列中出現次數超過一半的數
採用陣地攻守的思想 第乙個數字作為第乙個士兵,守陣地 count 1 遇到count為0的情況,又以新的i值作為守陣地的士兵,遇到相同元素,count 遇到不相同元素,即為敵人,同歸於盡,count 到最後還留在陣地上的士兵,有可能是主元素。記錄這個可能的主元素的個數是否大於陣列一半即可確定返回值。...