每日一題 求眾數

2021-10-08 03:21:20 字數 1989 閱讀 1594

給定乙個大小為n的陣列,找出其中的眾數。

眾數是指在陣列**現次數大於(n/2)取下界的元素。

示例1:

輸入:[3,2,3]

輸出:3

示例2:

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

輸出:2

#include

/* 摩爾投票演算法思想:

1、選取序列中第乙個元素為當前序列出現次數較多的元素

2、選取乙個變數來「計分」,初始為1,

3、依次遍歷第乙個元素後面的元素,遍歷的當前元素與前乙個元素不同時,得分減一,相同時,得分加一

4、當得分小於0時,改變當前序列**現次數較多的元素

時間複雜度o(n)

缺點:只適用於序列元素**現次數大於(n/2)取下界的元素

*/int

majorityelement

(int

* nums,

int numssize)

else

(nums[i]

== res)

?++cnt :

--cnt;

}return res;

}int

main()

;int numslength =

sizeof

(nums)

/sizeof

(nums[0]

);printf

("眾數為:%d\n"

,majorityelement

(nums, numslength));

return0;

}

給定乙個大小為n的陣列,找出其中所有出現次數超過(n/3)取下界的元素。

示例1:

輸入:[3,2,3]

輸出:3

示例2:

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

輸出:[1,2]

#include

#include

/* 找出陣列中元素出現次數大於(n/3)取下界的所有元素,

由數學關係式易得,乙個陣列中最多有兩個這樣的元素。

仍然採用摩爾投票演算法

*///nums:待查詢的陣列;numssize:陣列大小;*returnsize:滿足條件的元素個數

int*

majorityelement

(int

* nums,

int numssize,

int* returnsize)

cm =0;

cn =0;

//清空計分變數,統計出現次數,看是否滿足出現次數大於(n/3)取下界的條件

for(

int i =

0; i < numssize; i++)if

(cm >

(numssize /3)

) res[

(*returnsize)++]

= m;

if(cn >

(numssize /3)

) res[

(*returnsize)++]

= n;

return res;

}int

main()

;int numslength =

sizeof

(nums)

/sizeof

(nums[0]

);int* res =

majorityelement

(nums, numslength,

&returnsize)

;printf

("陣列中眾數的個數為:%d\n"

, returnsize)

;printf

("眾數為: ");

for(

int i =

0; i < returnsize; i++

)printf

("\n");

return0;

}

CTF每日一題之求素數

大概翻譯一下就是說,求一百萬以後的兩個素數,素數本身的位數加起來也得是素數 就是 23 是個宿舍 2 3 為5 5也是素數,這樣 ok,1百萬以後,這種題,默默的開啟qt 想了一下還是關了,默默的開啟pycharm 貼上 from math import sqrt def is prime n if...

每日一題 求1 2 n(中等)

劍指 offer 64.求1 2 n 求 1 2 n 要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 示例 1 輸入 n 3 輸出 6 示例 2 輸入 n 9 輸出 45 class solution 邏輯運算子的短路效應 常見的邏輯...

每日一題 1

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...