Leetcode 第30場雙周賽

2021-10-23 08:35:09 字數 2164 閱讀 8669

第一眼看到這題就覺得用python做會很簡單,但是我的python實在是不太行,所以就拿c++硬懟了。

c++:

class

solution

; string ms[12]

=;string res ="";

int len = s.

size()

; res = res + s[len -4]

+ s[len -3]

+ s[len -2]

+ s[len -1]

+'-'

; string day ="";

int index =0;

for(

int i =

0; i < len; i++

)else}if

(day.

size()

==1) string month ="";

for(

int i = index +

3; i < len; i++

)else

}for

(int i =

0; i <

12; i++)}

res = res + month +

'-'+ day;

return res;}}

;

之後又學習了python的解法,真滴快啊:

class

solution

:def

reformatdate

(self, s:

str)

->

str:

d, m, y = s.split(

) d =

int(d[:-

2]) month =

["jan"

,"feb"

,"mar"

,"apr"

,"may"

,"jun"

,"jul"

,"aug"

,"sep"

,"oct"

,"nov"

,"dec"

] m =

0for i in

range(12

):if month[i]

== m:

m = i+

1 y =

int(y)

res =

"%04d-%02d-%02d"

%(y, m, d)

return res

想了半天有什麼優秀演算法,然後發現就是暴力。。。

**如下:

class

solution

}sort

(s.begin()

, s.

end())

;int res =0;

int mod =

1e9+7;

for(

int i = left-

1; i < right;

++i) res =

(res+s[i]

)%mod;

return res;}}

;

一次一次操作想可能性太多了,全域性角度看,就是從排序後的陣列兩邊刪掉三個元素,問最後左右兩端差值,那麼遍歷一遍就成了

**如下:

class

solution

sort

(nums.

begin()

, nums.

end())

;int res = nums.

back()

- nums.

front()

;for

(int i =

0; i <=

3; i++

)return res;}}

;

動態規劃

**如下:

int f[

100010];

class

solution}}

}return f[n];}

};

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 ...