leetcode刷題筆記(二)

2021-10-01 11:09:59 字數 991 閱讀 1382

描述:給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

示例 2:

輸入: 「bbbbb」

輸出: 1

解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。

示例 3:

輸入: 「pwwkew」

輸出: 3

解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。

請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。

思路

使用兩個游標去遍歷字串,這兩個游標之間的值不可以重複;

使用乙個陣列取模擬hash去重,索引存字元值,字元值對應的值出現為1,否則為0;

若右游標對應的字元已經出現過,就更新max值為最大的;然後移動左游標讓其移動到和右游標相等值的右邊。清空中間的hash值

若是沒有出現過,儲存下字元的hash

最後返回最新最大長度即可。

int

lengthoflongestsubstring

(string s)

;int left =

0,right =0;

int max =

0,temp =0;

for(right =

0;right < s.

size()

;right++

)else

}//將left移動到右邊

left++;}

else

} temp = right - left;

return max >= temp ? max : temp;

}

願每乙個程式設計師都能被溫柔相待

LeetCode刷題筆記(二)

4.兩個排序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不同時為空。示例 1 nums1 1,3 nums2 2 中位數是 2.0示例 2 nums1 1,2 ...

leetcode刷題筆記(二)

接上篇,先來看106題,此題與105題類似,是通過中序和後序遍歷結果復原二叉樹。還是選擇遞迴的方法 首先看題目函式的引數 struct treenode buildtree int inorder,int inordersize,int postorder,int postordersize 中序的...

Leetcode刷題筆記

1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...