解法
先用 cnt[i]
被 cite 過 i 次的文章總共有幾個,再用再由後向前更新。
就可以知道 >= i
的 paper 有多少,再來判斷。
程式碼
1 | class Solution { |
先用 cnt[i]
被 cite 過 i 次的文章總共有幾個,再用再由後向前更新。
就可以知道 >= i
的 paper 有多少,再來判斷。
1 | class Solution { |
由於他是可以一直買賣,因此只要與前一天有賺就收集下來,全部累積下來就是答案。
1 | using namespace std; |
由於題目限定要 完成,我們可以先將數列全部反轉,12345678
變成 87654321
,再來找出從哪個點在選轉後來到第一位假設選轉後 5 變第一位則變為 56784321
,之後再將未反轉的進行反轉就好,變成 56781234
。
核心想法是: 由於數字肯定有序,並且一定是從特定值開始依序,在回到 1234,故可使用字串反轉。
1 | using namespace std; |
使用多數投票算法來解決此問題。
vote = 1, ans = nums[0]
ans
相同則 vote++
vote--
vote == 0
則修改 ans, vote
n/2
,所以在這一增一減情況下,最後一定會留下 n/2
的值1 | class Solution { |
由於我們要使 GCD 最大,因此必須使 n 都要是 x 的倍數,所以只需要判斷 x 可以被哪個因數整除,在判斷是否有大於 n,若有,則可以用 x / 因數
方式來解決;反之概念相同。
1 |
|
使用 greedy 的方式最快判斷出 yes or no, 如果是 no 則是缺少哪個單字。
由於這題是排列組合子字串,n 個字母只能夠出現 k 個不同英文字母,因此,只需要判斷需要多少長度的字元,才可以包括 k 個不同字母,反覆 n 次測試,如成功則 yes、反之則 no。
如果是 no,則發現 no 之後的字母輸出沒有包括地英文字母就好,前面任意。
1 |
|
merge sort 的 “merge” step 實作。
1 | class Solution { |
使用雙迴圈檢查重複的資料們是否重複,有重複就更改成 int 最大值,最後再用 sort
1 | class Solution { |