LintCode 46. Majority Element
阿新 • • 發佈:2018-12-10
描述:
給定一個整型陣列,找出主元素,它在陣列中的出現次數嚴格大於陣列元素個數的二分之一。
自己的做法太醜陋,只有dalao的做法
思路:反正主元素一定是數組裡面數量最多的那一個數,採取的策略是,每當遇到同一個數,計數器count++,當遇到不同的數,count--,當count = 0 時,更換另一個數。(但是我現在仍然如何從貪心的角度去解讀這個思路,望賜教)
public int fastMethod(List<Integer> nums){ if (nums == null) return Integer.MAX_VALUE; int count = 0; int ans = 0; for (int i : nums) { if (count == 0) { ans = i; count++; } else if (ans != i) { count--; } else if (ans == i) { count++; } } return ans; }
summary : 尋找數量最多的個體,有一種“正負抵消”的思想