【leetcode】
1.?Two Sum
【題目】https://leetcode.com/problems/two-sum/description/
【思路】將數組 利用 map 處理 即可
【代碼】
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 // 哈希表存儲 值->下標 的映射 5 unordered_map<int, int> indices; 6 7 for (int i = 0; i < nums.size(); i++) 8 { 9 int temp = target - nums[i]; 10 if (indices.find(temp) != indices.end() && indices[temp] != i) 11 { 12 return vector<int> {indices[temp], i}; 13 } 14 indices.emplace(nums[i], i); 15 } 16 } 17 }; C++ 1 class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 Map<Integer, Integer> indeces = new HashMap<>(); 4 for(int i=0;i<nums.length;++i) { 5 int temp = target - nums[i]; 6 if(indeces.containsKey(temp)) { 7 return new int[] {indeces.get(temp), i}; 8 } 9 indeces.put(nums[i], i); 10 } 11 return null; 12 } 13 } Java【get】
C++中 HashMap 的使用
https://blog.csdn.net/charles1e/article/details/52042066
?
2.?Add Two Numbers (2018/10/17)
【題目】https://leetcode.com/problems/add-two-numbers/description/
【思路】考察數據結構——鏈表,主要是鏈表的操作
?
?
3.?Longest Substring Without Repeating Characters (2018/10/22)
【題目】https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
給定一個字符串,找到一個最長的連續子串,使其滿足每一個字符都不重復
【思路】
(1)維護一個HashMap 記錄出現過的字符? key:字符 value:字符在數組的下標
(2)初始 i = j = 0
j 向后移動 并把字符加到HashMap中
如果遇到重復的字符,由 HashMap 更新 i , 使 i 向后跳躍?
比如 123abcda 讀到 j? == 7 時, 發現 s[7] = s[3] , i 更新為 4
?
?
4.?Median of Two Sorted Arrays (2018/10/22)
【題目】https://leetcode.com/problems/median-of-two-sorted-arrays/description/
給兩個有序的數組,求兩個數組合并后的中位數,給出log(m+n)的算法
【思路】
(1)自己leetcode寫了一個O(M+N)復雜度的算法,提交竟然AC了
(2)看到log(m+n),想到二分法,關鍵時要如何進行二分
官方題解講得挺詳細的?https://leetcode.com/problems/median-of-two-sorted-arrays/solution/
?
5.?Longest Palindromic Substring (2018/10/24)
【題目】https://leetcode.com/problems/longest-palindromic-substring/description/
大意:找一個最長子串,該子串回文
【思路】
(1)找一個中心,向兩邊擴展找最長回文子串
遍歷每個中心,假設字符串長度為n,一共有 2n -1 個中心
時間復雜度 O(n*n)
(2)dp
狀態轉移方程? dp[i][j] 表示 子串s[i] ~ s[j] 是否為回文
6.?ZigZag Conversion (2018/10/25)
【題目】https://leetcode.com/problems/zigzag-conversion/description/
【思路】畫出圖形,找一下規律即可
?
7.?Reverse Integer (2018/10/25)
【題目】將一個int數反向輸出,如果反向后超出int范圍,輸出0
【思路】水題
?
8.?String to Integer (atoi) (2018/10/25)
【題目】將字符串轉化為整數
【思路】水題
?
9.?Palindrome Number(2018/10/25)
【題目】判斷回文數
【思路】水題
?
10.?Regular Expression Matching
【題目】
【思路】
?
?
11.?Container With Most Water (2018/10/31)
【題目】https://leetcode.com/problems/container-with-most-water/description/
可以抽象為如下數學表達:
* 給定一個數組a[N] , 求max{ s }, s=min(s[i],s[j])*(j-i) 且j > i
【思路】
(1)用暴力搜索 AC了,發現leetcode不怎么卡時間
(2)使用雙指針,分別在開頭結尾向中間移動
?
?
12.?Integer to Roman(2018/10/31)
【題目】將一個整數轉化為羅馬符號
【思路】先轉化個位的數字,再轉化十位的數字....
* 注意輸出的順序
?
17. Letter Combinations of a Phone Number(2018/11/3)
【題目】輸出所有序列
【思路】用樹分析題目,很容易想到用dfs
?
?
19. Remove Nth Node From End of List(2018/11/3)
【題目】給一個單向鏈表,去除倒數第n個元素
【思路】雙指針:
?兩個指針間隔n個單位,
然后一起向后移動,
當第二個指針移動到末尾,第一個指針就移動到了倒數第n個元素的位置
?
22. Generate Parentheses (2018/11/4)
【題目】枚舉出規定長度的括號序列
【思路】遞歸 O(2^(2n))
剪枝優化,遞歸過程中一旦檢測到序列不合法,即終止添加括號
?
?
23. Merge k Sorted Lists (2018/11/7)
【題目】給出k個已經排好序的鏈表,合成一個排好序的鏈表
【思路】用最小堆維護每一個鏈表的第一個節點,
? 每次移除最小堆的最小值,用相應的鏈表的下一個值代替,對最小堆進行更新,更新時間復雜度為O(logk),
? 也就是找所有鏈表第一個節點的最小值
?【思路2】 題解中用了歸并這種思想
先是 k 組 合并成 k/2 組?
K/2 組 合并成 k/4 組
。。。
直到合并為一組,算法結束
?
?
【題目】
【思路】?
?
?
轉載于:https://www.cnblogs.com/chsobin/p/9689721.html
總結
以上是生活随笔為你收集整理的【leetcode】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 素数 乘法表 闰年
- 下一篇: P2184 【贪婪大陆】