169 多數元素

2021-10-21 18:05:39 字數 770 閱讀 9457

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

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

這種方式超時了,但是使用partition函式的思路可以借鑑:

由於多數元素一定出現在陣列的中間位置,那麼使用快排的partition函式能夠幫助定位。

解題思路:

partition函式的作用是:int partition(vector& nums,int beg,int end)對於給定的nums,開始和結束位置為beg 和end,也就是partition的操作物件為乙個子陣列。將子陣列以某乙個元素為界分為兩部分,返回該分界點元素的下標。

迴圈:當pos不等於mid時進行迴圈,如果pos比mid小,那麼可以收縮左邊界,如果pos比mid大,那麼可以收縮右邊界。

class

solution

else

if(pos>mid)

}return nums[pos];}

intpartition

(vector<

int>

& nums,

int beg,

int end)

while

(i<=pivot)

if(i} nums[beg]

= nums[i]

; nums[i]

= pivot;

return i;}}

;

169 多數元素

解題思路 1.將陣列從小到大排序 2.第nums.length 2處的元素就是我們要求的元素,直接返回nums nums.length 2 即可 實現 class solution 解題思路 1.變數val,初始值為nums 0 記錄當前的值,計數器cnt,記錄當前元素累計出現的情況,初始值為1 2...

169 多數元素

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 分析 解法一 我們可以先排序,然後輸出在陣列 現次數大於...

169 多數元素

題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 方法1 直接使用unordered map進行...