而立之年終未立,不惑而年猶存惑!這或許就是所謂的中年危機吧!html
自認爲是一個「勤奮」的人,又「未有寸功」,每天碌碌,不知何爲。java
「常立志」而未達,以致於「泯然衆人矣」。c++
2020年起的五年,專一於2-3個點,但願能有一點點小「成就」。算法
堅持輸入數據結構
簡而言之,就是不斷學習。app
讀書: 每讀一本書就寫讀書心得。函數
提高技術能力:提高java開發能力,精進C++能力。學習
思考測試
行動上的勤快人,不作思想的懶漢;調試
用思惟導圖進行總結
輸出
堅持技術博客,2020年度至少寫100篇;
刷leetcode,作到手寫代碼bug free。經過刷題,提高我的「數據結構」、「算法」等能力。
閒話少敘,直奔主題,從leetcode的top-100-liked-questions
開始。
第一個題目是two sum
,看到題目,難度是easy,但我懵了。
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
好在題目右邊,有一個框,選擇java的時候,會出現:
若是說用java寫,我以爲仍是寫的出來的。
畢竟一直在用,並且對於裏面的集合相關類都很是熟悉。
但C++,我確實倍感吃力,主要是STL不多用,上來給了vector,我就已經無力了:
我在dev-c++寫代碼,遇到3個問題。
第1個是環境,須要配置-std=c++11
,見下圖:
第2個,就是要
#include<vector> #include<unordered_map>
第3個,須要增長調試:
看來要補的知識還不少。
在此,我有一個疑問,代碼提交上去後,他們怎麼測試?
是否是有test case:生成Solution對象,調用twoSum(),驗證結果?
還須要學習啊!
寫了2個版本,第一個版本:
public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; for(int i=0; i< nums.size(); i++){ for(int j=i+1; j< nums.size(); j++){ if(nums[i] + nums[j] == target){ res.push_back(i); res.push_back(j); break; } } } return res; } };```
第二個版本,網上找的:
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> mapping; vector<int> result; for(int i=0;i<nums.size();i++){ mapping[nums[i]] = i; } for(int i=0; i< nums.size(); i++){ const int gap = target - nums[i]; if(mapping.find(gap) != mapping.end() && mapping[gap]>i){ result.push_back(i); result.push_back(mapping[gap]); break; } } return result; } };
上述代碼,是須要提交的,若是在本地的dev-c++中,則須要增長main函數:
int main(){ Solution s; vector<int> v = {2,7,11,15}; vector<int> v2 = s.twoSum(v,9); for(vector<int>::iterator iter=v2.begin();iter!=v2.end();++iter) cout<<*iter<<" "; return 0; }
內存差很少,但速度提高10倍:
完整代碼須要的,請留言,我發給您!
爲了後面更快的刷題,原本我就很是熟悉c++,但不熟悉STL,two_sum我寫了7遍。
差很少,能夠作到 「快」,「bug free」了。
爲何要寫這麼多遍???請參考個人另兩篇博客: