从心出发-刷leetcode写给5年后的自己

而立之年终未立,不惑而年犹存惑!这或许就是所谓的中年危机吧!

自认为是一个“勤奋”的人,又“未有寸功”,天天碌碌,不知何为。

“常立志”而未达,以至于“泯然众人矣”。

2020年起的五年,专注于2-3个点,深度耕耘,希望能有一点点小“成就”。

1. 提升个人能力

  • 坚持输入

    简而言之,就是不断学习。

    读书: 每读一本书就写读书心得。

    提升技术能力:提升java开发能力,精进C++能力。

  • 思考

    行动上的勤快人,不做思想的懒汉;

    用思维导图进行总结

  • 输出

    坚持技术博客,2020年度至少写100篇;

2. 用3个月的时间刷leetcode

刷leetcode,做到手写代码bug free。通过刷题,提升个人“数据结构”、“算法”等能力。

闲话少叙,直奔主题,从leetcode的top-100-liked-questions开始。

3. two sum

第一个题目是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++写代码,遇到2个问题。

第一个是环境,需要配置-std=c++11,见下图:

第二个,就是要 #include<vector>。

看来要补的知识还很多。

4.疑问

在此,我有一个疑问,代码提交上去后,他们怎么测试?

是不是有test case:生成Solution对象,调用twoSum(),验证结果?

还需要学习啊!

5.总结

写了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倍:

原文地址:https://www.cnblogs.com/siweihz/p/12227130.html

时间: 2024-08-26 00:24:49

从心出发-刷leetcode写给5年后的自己的相关文章

刷LeetCode的正确姿势——第1、125题

最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的所有源代码都是用java语言写的. 接下来的一段时间里,我会将里面的大部分内容翻译成中文,再加上一些小y自己的解法和扩展内容,以博客的形式发在博客园.我想,这会是一件非常有趣的事情. 以下是翻译的前言部分,第1.4题以及其解析部分. 前言: 嗨,各位刷LeetCode的小伙伴们. 就像你们看到这本书

初刷LeetCode的感受

自从上个月进入实验室的云安全项目组后,因为要接触到实际的代码,在实验室博士的建议下我们项目组的硕士开始刷LeetCode练习编程能力,保持每周抽空刷几道算法题.虽然刷的不多,到现在一共只刷了不到30题,但在刷题的过程中还是有很多感触的. 实验室的博士建议我们按照题目的难易顺序循序渐进由易到难来刷,我也就照做了.因为前段时间在系统地学Python语言,所以我主要用的是Python语言来做,有的题目也采用了C/C++.Java甚至C#多种语言来尝试.在刷题的过程中,总结了自己的一些问题: 1. 对于

用golang刷LeetCode

用golang刷LeetCode 用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了. 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就没有了尊严. 1. 两数之和 题目描述 力扣(LeetCode)链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums

【一起刷LeetCode】整数反转

前言&絮叨 别人都忙着参加年会晒奖品,我却忙着写代码.每逢年底都要安排几个紧急项目,我什么时候能摆脱这种宿命. 在忙也不能忘记刷LeetCode,毛毛向前冲!!! 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[-2 ^ 31, 2 ^ 31 ? 1].请根

准备刷leetcode!

前段时间才知道了这个刷题的地方,但是现在我连动规还没看完,决定把现在这本<计算机算法设计与分析>大概看完就去刷leetcode. 当然看书的时候也是要刷题的,就先刷着学校的sicily吧,毕竟用着挺习惯的. 恩,看完这本书看数据结构C语言那本. 一定要好好学英语,要不然连题目都看不懂...

从心出发

人们往往会被失败的教训羁绊,放弃成长,逐渐形成了心理上的惰性,用陈规陋习把自己束缚住.要有更辉煌的人生,就需要有一个需要努力才能达到的,令你心动的,充满吸引力的长期目标.并在生命的每一个新的发展阶段,重新去审视和调整这个目标,追求一个全新的自我,全力以赴,实现自己的梦想.人生只有在专心一致.勤奋不懈时才可获得成长.从心出发!

《从觉知当下的心出发》四念处禅法简介(一)

以下可点击在线阅读 德嘉尼亚禅师简介 <从觉知当下的心出发>序 禅修第一课:正见及觉知的重要性 禅修的心:如何开发五根及培育智慧 四念处禅法简介 禅修的心必须是善心,如果带着贪瞋痴来禅修的话,就不是正确的修习.有时候我们很努力地去禅修,但却不知道心的态度是怎样.其实,此时很可能是带着贪的动机来禅修.这就是为什么我反复强调禅修的心态一定要正确,要用善的心去禅修,这是十分重要的. 关于心,首先我们需要知道「觉知」是什么.大家知道什么是「觉知」吗? 「觉知」是不忘失,不忘记什么是正确的所缘.觉知的所

新起点 心出发--NF1410

随着掌声的响起,NF1410班开班啦! 新起点.新面貌.新希望.新征程.新的收获:,让我们憧憬更美好的明天,让我们再一次踏上新的学习征途. 引用兰总的一句话:痛并快乐着.使你痛苦的人和事一定会使你强大这是一句深饱含义的话,痛在学习过程中不断的敲代码,在错误中不断汲取知识,不断完善一段新的代码.追求:是充实生命的必然途径,时间就像那无情的流水,学习的过程总是辛苦的. 快乐在卓跃找到了人生目标,找到家的感觉,有了一种很强的归属感,同时高兴的是,有和自己志同道合的.有共同目标的同学一起努力奋斗.快乐当

我也来刷LeetCode——0、Maximum Depth of Binary Tree(开篇)

作为一个非科班出身的程序员,还是很有必要刷刷题的.之前有个大牛说,菜鸟刷题可以从AC率高的刷起,这样可以快速培养信心.将LeetCode的题目按照AC率从高到低排序,第一道题目为 [Maximum Depth of Binary Tree]. 从题目就可以看出,是求二叉树的最大深度.深度的概念,是指从根节点到叶子节点的这条路径上的总节点数. 要求二叉树的最大深度,只需要求出左子树的深度和右子树的深度,取两者最大值再加 1 ,即为二叉树的最大深度. 若该二叉树为空,返回 0 . 然后就是将算法翻译