LeetCode 第20場雙周賽 題解

2021-10-03 22:19:11 字數 1613 閱讀 5109

傳送門

就是名字的字面意思

將陣列中的元素按照其二進位制表示中數字 1 的數目公升序排序。如果存在多個數字二進位制中 1 的數目相同,則必須將它們按照數值大小公升序排列。

按題意模擬

int

cmp(vector<

int> a, vector<

int> b)

class

solution

return ans;

} vector<

int>

sortbybits

(vector<

int>

& arr)

sort

(sort.

begin()

,sort.

end(

),cmp)

;for

(int i=

0;i++i)

arr[i]

=sort[i][0

];return arr;}}

;

有一些顧客要買一些商品,商品的**和數量給出,商家每隔n個顧客會打折,問每個人實際花銷。

按題意模擬。。

class

cashier

double

getbill

(vector<

int> product, vector<

int> amount)}if

(tot%n==0)

p=p-((

double

)discount*p)

/100.0

;return p;}}

;/**

* your cashier object will be instantiated and called as such:

* cashier* obj = new cashier(n, discount, products, prices);

* double param_1 = obj->getbill(product,amount);

*/

給出乙個字串,求包含了三種字元的子字串數目。

雙指標,左指標列舉子串的開頭,右指標指向符合要求的最短子串結尾(子串結尾在右指標之右的肯定都成立,直接計算),顯然兩指標單調。

class

solution

if(a&&b&&c)

ans+

=n-r;

if(s[l]

=='a'

)--a;

else

if(s[l]

=='b'

)--b;

else

--c;

++l;

}return ans;}}

;

給出n個二元組,將其合併產生乙個長度為2n的排列,其中二元組的內部順序不能改變,求可能的排列個數。(給出的n個二元組互不相同)。

數學題?不不,還是模擬。

乙個乙個的排,只不過用乙個等差數列求和公式這也叫數學題

class

solution

return ans;}}

;

leetcode第8場雙周賽

這次雙周賽有意外,第二第三題按照提示返回int會報錯,要返回list 第一題給你乙個字串 s,返回只含 單一字母 的子串個數。示例 1 輸入 aaaba 輸出 8 解釋 只含單一字母的子串分別是 aaa aa a b aaa 出現 1 次。aa 出現 2 次。a 出現 4 次。b 出現 1 次。所以...

leetcode第 24 場雙周賽

給你乙個整數陣列nums。你可以選定任意的正數startvalue 作為初始值。你需要從左到右遍歷nums陣列,並將 startvalue 依次累加上nums陣列中的值。請你在確保累加和始終大於等於 1 的前提下,選出乙個最小的正數作為 startvalue 輸入 nums 3,2,3,4,2 輸出...

leetcode 第27場雙周賽

通過翻轉子陣列使兩個陣列相等 檢查乙個字串是否包含所有長度為k的二進位制子串 課程安排 摘櫻桃 3分 簡單 4分 中等 5分 中等 6分 困難 翻譯下題意,其實就是問我們兩個陣列是否相等,判斷陣列是否相等有很多方法,這邊我直接排序,遍歷一遍看是否有不一樣的元素 陣列排序的複雜度,故為o nlogn ...