publicintmajorityElement2(int[] nums){ Map<Integer, Integer> myMap = new HashMap<Integer, Integer>(); //Hashtable<Integer, Integer> myMap = new Hashtable<Integer, Integer>(); int ret=0; for (int num: nums) { if (!myMap.containsKey(num)) myMap.put(num, 1); else myMap.put(num, myMap.get(num)+1); if (myMap.get(num)>nums.length/2) { ret = num; break; } } return ret; }
// Moore voting algorithm publicintmajorityElement3(int[] nums){ int count=0, ret = 0; for (int num: nums) { if (count==0) ret = num; if (num!=ret) count--; else count++; } return ret; }
// Bit manipulation publicintmajorityElement(int[] nums){ int[] bit = newint[32]; for (int num: nums) for (int i=0; i<32; i++) if ((num>>(31-i) & 1) == 1) bit[i]++; int ret=0; for (int i=0; i<32; i++) { bit[i]=bit[i]>nums.length/2?1:0; ret += bit[i]*(1<<(31-i)); } return ret; }
近期评论