力扣簡169 多數元素
阿新 • • 發佈:2022-05-29
自己用了一個map:
字典Map:(鍵值對)
Map<Integer, Integer> map=new HashMap<Integer, Integer>();
map.containsKey(key); contains字典是否包含鍵key
map.replace(key, map.get(key)+1); replace 替換,返回舊的val
get 得到key對應的value
map.put(key,value); 放入新的鍵值對
for(int i:map.keySet()) {} 對於key集合中的每個key做迴圈
package leetcode01; import java.util.HashMap; import java.util.Map; //給定一個大小為 n 的陣列 nums ,返回其中的多數元素。多數元素是指在陣列中出現次數 大於 ⌊ n/2 ⌋ 的元素。 //你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。 //進階:嘗試設計時間複雜度為 O(n)、空間複雜度為 O(1) 的演算法解決此問題。 public class Solution169 { public static intmajorityElement(int[] nums) { Map<Integer, Integer> map=new HashMap<Integer, Integer>(); for(int i=0;i<nums.length;i++) { if(map.containsKey(nums[i])) { map.replace(nums[i], map.get(nums[i])+1); } else map.put(nums[i],1); } for(int i:map.keySet()) { if(map.get(i)>nums.length/2) { return i; } } return 0; } public static void main(String[] args) { // TODO Auto-generated method stub int[] nums= {1,2,1,2,2}; System.out.print(majorityElement(nums)); } }
看了簡136 只出現一次的數字想的思路 排序,然後逐個統計。
public static int majorityElement(int[] nums) { Arrays.sort(nums); int num=1; int pre=nums[0]; for(int i=1;i<nums.length;i++) { if(pre==nums[i]) { num++; if(num>nums.length/2) { return pre; } } else { pre=nums[i]; num=1; } } return pre; }