二、資料庫
以此記錄本人的leetcode刷題之路。 ——題目內容均**於leetcode
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
分析:
難度:c-
若是通過兩重迴圈對[1,n]和[i,n]進行遍歷,則時間複雜度為o(n
2n^2
n2),空間複雜度為o(1)。對於每個值nums[i],目的是要找到它以外等於target-nums[i]的值。則該查詢過程可用hashmap將時間複雜度降為o(1),整個時間複雜度為o(n
nn),空間複雜度為o(n
nn)。
**:
class
solution
; map.
put(nums[i]
,i);
}return
newint[0
];}}
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
分析:
難度:c-
其實就是長整數的相加。題目中已經逆置降低了難度,一般還會要求寫出原地逆置的方法。難點不在演算法反而在於要仔細,不讓節點空引用。
**:
class
solution
if(q!=null)
res.val=
(label+m+n)%10
;if(label+m+n>=10)
else
} res=res.next;
}return ret;
}}
給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
示例 4:
輸入: s = ""
輸出: 0
0 <= s.length <= 5 * 104
s 由英文本母、數字、符號和空格組成
分析:
難度:c
將時間複雜度控制在o(n
nn),即通過一輪遍歷找出解。設定乙個頭指標,保證頭指標到當前指標無重複,當檢測到當前字元與串中字元重複時,則下標差即為乙個無重複串的長度。將每次的長度與已記錄最小長度取小者。
hashmap:
//思路過於狹窄,只考慮了重**生時的處理,應該從一般情況考慮,減少不必要的判斷
class
solution
head=map.
get(s.
charat
(i))+1
;}} map.
put(s.
charat
(i),i);}
return min>s.
length()
-head?min:s.
length()
-head;
//由於判斷條件限制,整個串無重複時需返回length
}}
桶:
class
solution
int n = s.
length()
;int res =0;
int start =0;
// 視窗開始位置
for(
int i =
0; i < n; i++
)return res;
}}
hashmap是我寫的,桶是大神寫的,在去掉那些沒必要的if之後執行效率仍然比用桶更低。我的邏輯是:當發生碰撞,計算長度;大神的邏輯是:持續計算長度,當發生碰撞重置。 開始刷題LeetCode
今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...
leetcode刷題歷程
難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...
LeetCode刷題總結
123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...