而立之年终未立,不惑而年犹存惑!这或许就是所谓的中年危机吧!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”了。
为何要写这么多遍???请参考个人另两篇博客: