初刷LeetCode的感受

  自从上个月进入实验室的云安全项目组后,因为要接触到实际的代码,在实验室博士的建议下我们项目组的硕士开始刷LeetCode练习编程能力,保持每周抽空刷几道算法题。虽然刷的不多,到现在一共只刷了不到30题,但在刷题的过程中还是有很多感触的。

  实验室的博士建议我们按照题目的难易顺序循序渐进由易到难来刷,我也就照做了。因为前段时间在系统地学Python语言,所以我主要用的是Python语言来做,有的题目也采用了C/C++、Java甚至C#多种语言来尝试。在刷题的过程中,总结了自己的一些问题:

  1. 对于数据结构类的题目(例如链表、二叉树等),其实是很简单的题目,但因为很久没有接触数据结构的代码,没有信心去尝试。以后要客服这种畏难的心理,应该在刷题的过程中做到边做边学。

  2. 对于带有字符串或者数组操作的题目,用类C语言尝试总是会遇到困难,也产生了畏难心理,在这方面还要多看看书来加强。

  3. 有的题目乍一看很简单,但用一般的算法很容易超时(特别是对于Python这种执行速度慢的解释型语言),有的题目甚至要求了不能用额外的空间、不能使用循环或者对于时间复杂度有要求(O(n)甚至O(1))。看来还要提高算法优化的水平,同时数学能力也非常重要。

  4. 算法类的题目总体来说还是比较有难度,题目出的也很巧妙,有时候需要进行一番头脑风暴才能有一些头绪,以后还要多刷题保持编程的感觉。

  5. 英文快速阅读水平还要再加强,因为题目都是英文的,有些比较长的题目不太容易看懂。

  针对自己的这些问题,接下来要进行有针对性的补充学习。因为最近临近期末,所以打算利用寒假好好恶补。目前主要是要提高数据结构与算法方面的能力(手上关于算法和数据结构的书太多了),同时还要继续学习Python语言(廖雪峰教程+实际项目)、Linux系统(鸟哥的私房菜+实际操作)以及与项目相关的OpenStack云平台上的开发,再深入地学习Java或者C++其中的一门语言。有机会的话还想接触一下机器学习,手里正好有一本用Python语言写的《机器学习实战》。

  要成为一名合格的程序猿需要学的东西太多,不光是知识的广度,更重要的是深度的积累。未来任重而道远啊!

  附上到目前为止所刷过的LeetCode题:

# Title Acceptance Difficulty
326 Power of Three   39.1% Easy
1 Two Sum   29.2% Easy
169 Majority Element   44.5% Easy
206 Reverse Linked List   43.1% Easy
136 Single Number   52.5% Easy
231 Power of Two   39.1% Easy
415 Add Strings   41.4% Easy
242 Valid Anagram   44.5% Easy
441 Arranging Coins   36.3% Easy
349 Intersection of Two Arrays   45.3% Easy
258 Add Digits   50.0% Easy
66 Plus One   36.6% Easy
292 Nim Game   54.5% Easy
171 Excel Sheet Column Number   44.9% Easy
342 Power of Four   37.1% Easy
434 Number of Segments in a String   40.0% Easy
344 Reverse String   57.4% Easy
345 Reverse Vowels of a String   37.0% Easy
27 Remove Element   36.6% Easy
237 Delete Node in a Linked List   45.2% Easy
371 Sum of Two Integers   51.5% Easy
13 Roman to Integer   43.1% Easy
383 Ransom Note   45.8% Easy
9 Palindrome Number   33.9% Easy
389 Find the Difference   50.2% Easy
412 Fizz Buzz   58.1% Easy
283 Move Zeroes   47.4% Easy
时间: 2024-10-18 18:10:01

初刷LeetCode的感受的相关文章

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

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

准备刷leetcode!

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

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

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

用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写给5年后的自己

而立之年终未立,不惑而年犹存惑!这或许就是所谓的中年危机吧! 自认为是一个"勤奋"的人,又"未有寸功",天天碌碌,不知何为. "常立志"而未达,以至于"泯然众人矣". 2020年起的五年,专注于2-3个点,深度耕耘,希望能有一点点小"成就". 1. 提升个人能力 坚持输入 简而言之,就是不断学习. 读书: 每读一本书就写读书心得. 提升技术能力:提升java开发能力,精进C++能力. 思考 行动上的勤快人,

Leetcode 初刷(1)

1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 方法1:思路简单,时间复杂度高   用时:3124ms,内存:12.5MB def twoSum2(nums,targe

leetcode AC1 感受

在网上第一个AC还是蛮高兴的,之前试了不少练习编程的方法,感觉不怎么适合自己,在OJ上做题的确是一个能够锻炼的方法. 之前一直研究学习的方法,往简单的说是认知.练习,往复杂的说是,保持足够input,input内容足够narrow,难度适合,逐渐+i ,总结并输出. 不过第一次成功很高兴,leetcode不愧是入门级,适合没怎么自己写过代码的人练手. 题目:地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/ Given a

python刷LeetCode:28. 实现 strStr()

难度等级:简单 题目描述: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回  -1. 示例 1: 输入: haystack = "hello", needle = "ll"输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba"输出