LeetCode 題目

儘量一天更新一道題。奮鬥

PS:代碼是自己做完後經過查看優代碼修改後的代碼。

1. 題目 :Two Sum

題意:給你一個n個數的數組A[ ] 和一個數值target,在數組中找到兩個加起來等於target的元素的位置。注意:位置下標從1開始的。

解題思路:

  1. vector + map/hash_map(hash_map可能更好點,但是有的編譯器不支持),複雜度: O(nlogn);
  2. 先對數組排序,然後用兩個指針,一個指針 st 指向開始,一個指針 end 指向結尾,計算兩個指針指向的值的和,如果大於目標值 target ,則end--,如果小於st++,等於則記錄返回。複雜度:O(n);

(1)代碼

2.題目:Add Two Numbers

解題思路:屬於胡搞一類的吧,so easy!

代碼

3.題目:Longest Substring Without Repeating Characters

解題思路:這題主要保持兩類記錄值就可以,一個是以字符下標爲索引的最新下標(這裏的下標是字符串中的下標,有點繞,微笑),另一個是所有字符下標的最大值,不斷更新這兩類座標最可以了,同時不斷計算保存答案。說白了還是一道想法題。

代碼

4.題目:Median of Two Sorted Arrays

解題思路:挺好的一道題,解題思路在代碼中。

代碼

6.題目:ZigZag Conversion

解題思路:第5題先放一下,本題是一道找規律的題目,具體的解析在代碼中。

代碼

14.題目:Longest Common Prefix

題意:寫一個函數來尋找一個字符串數組中的最長公共前綴。

解題思路:以第一個字符串爲標準,依次判斷與每個字符串的第i個字符是否相等,如果當前字符串的長度爲i(i的取值從0開始)或者當前字符串的字符不和第一個字符串的字符相等,則返回先前記錄的長度,否則繼續比較第i+1個字符是否相等。

代碼

15.題目:3Sum

題意:給定一組數,找出3個數a,b,c,使得a + b + c = 0,找出的三元組不能重複。

解題思路:先對數組排序,然後依次設定每一個數爲target = - 當前數,然後就想2Sum一樣處理,去找另外的兩個數,時間複雜度爲O(n^2);

代碼

20.題目:Valid Parentheses

題意:驗證括號是否能正常閉合,如“()[]{}”是可以正常閉合的,但“(]”就是不正常的。

解題思路:順手A掉這題,老掉牙的題目,具體題目解析在代碼中。

代碼

21.題目: Merge Two Sorted Lists

解題思路:主要考歸併思想,具體題目解析在代碼中。

代碼

70.題目Climbing Stairs

題意:有n級樓梯,你一次可以爬一級或兩級,問爬上n級樓梯有多少種爬法。

解題思路:典型的斐波那契數列。 當然用DP的思想來的話:dp[ i ] = dp[i - 1] + dp[i - 2];

代碼 

98.題目:Validate Binary Search Tree

題意:判斷一顆二叉樹是否是二叉排序樹。

解題思路:二叉排序樹中序遍歷後是有序的,採用中序遍歷,訪問當前節點的時候,當前節點的值是否大於前一個節點的值(如果有的話),如果小於則不是二叉排序樹。

代碼

 

 

 

發佈了274 篇原創文章 · 獲贊 50 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章