這道題是leetcode的第三題,也是比較經典的一道。題目說讓找到任意乙個字串的無重複字元的子串。如』abcabcbb』的無重複字元的最長子串是』abc』,所以輸出長為3。
解題的常規思路有以下兩種:
一 暴力列舉
對給定字串進行列舉,找到原始字串的所有子字串(兩層for迴圈即可)。接著對所有的字串進行判斷,看是否無重複字元,然後求出滿足條件的最長子串長度。第一種方法時間複雜度很高,大家可以練練手。
二 滑動視窗法
def
func
(s):
left,res =0,
0 m =
for i in
range
(len
(s))
:if s[i]
notin m:
res =
max(res,i-left+1)
else
:if m[s[i]
]>= left:
left = m[s[i]
]else
: res =
max(res,i-left+1)
m[s[i]
]= i +
1return res
Leetcode 打卡系列 1
題目描述 給定乙個非空且只包含非負的整數組nums,陣列的度定義是指數組裡任一元素出現頻數的最大值。任務 找到與nums擁有相同大小的度的最短連續子陣列,返回其長度 示例 輸入 1,2,2,3,1 輸出 2 思路 用3個字典分別儲存每個元素第一次出現位置 最後一次出現位置和出現次數,最短的陣列就是x...
leetcode打卡系列 3
給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 def func nums left right output left value...
LeetCode演算法打卡
475.供暖器 冬季已經來臨。你的任務是設計乙個有固定加熱半徑的供暖器向所有房屋供暖。現在,給出位於一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。說明 給出的房屋和供暖器的數目是非負數且不會超過 25000...