力扣 leetcode 169 多數元素

2021-10-10 19:18:23 字數 1254 閱讀 4433

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。

你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

輸入: [2,2,1,1,1,2,2]

輸出: 2

先上**

class

solution

if(times>max)

if(nums[i]

!= nums[i+1]

)}if(nums.length==1)

return turn;

}}

思路:1.排序,變為有序陣列2.遍歷 相同+1,不同置1 記錄下最多重複值 3.返回出現次數最多的值

時間複雜度:o(nlog(n)) 空間複雜度:o(log(n))思路:1.

時間複雜度排序(遞增) o(1) o(logn) o(n) o(nlog(n)) o(n^2)

思路:1.將每個鍵值對放入雜湊表中,key為num,value為出現次數,若雜湊表中不存在,放入時value為1,若存在則為map.get(num)+1

(map的get(num)方法會自己返回相同num最大的value)

2.遍歷,找到最大value對應的num

為什麼用map.entry介面?

因為要以map型別的乙個鍵值對遍歷map鍵值對集合就必須用map.entry介面表示對映項來遍歷map.entryset鍵值對集。

class

solution

else

}return map;

}public

intmajorityelement

(int

nums)

}return max.

getkey()

;}}

題目中說多數元素是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。

所以將陣列按序排列後,若眾數是最小的數,則它一定會經過下標為n/2處(眾數個數》=n/2+1,下標》=n/2),若為最大的數也相同。

所以只需排序後返回下標為n/2的數即可

class

solution

}

時間複雜度:o(nlog(n)) 空間複雜度:o(log(n))

LeetCode 169 多數元素

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 思路一 既然是多數且超過n 2,那麼排序之後,這些數中間...

LeetCode 169 多數元素

題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。法 1 直接遍歷 時間複雜度 o n 2 空間複雜度 o 1 public intmajorityelement1 int nums if...

leetcode169 多數元素

用乙個變數和計數器輔助,變數存放當前元素的值a,計數器統計當前元素出現次數n 如果遇到的元素和a不一樣,則n減一,如果n為零,則把a替換成遇到的元素,b設為1 最後的a即為要求的多數元素 class solution count candidate num 1 1 return candidate ...