第一次刷leetcode小结

LeetCode 上不会的

Reverse Integer

Single Number II

斐波那契数列 非递归算法

Maximum Subarray 维持最大值

Integer to Roman

Sort Colors

Populating Next Right Pointers in Each Node 怎么样控制一层

Gray Code

Generate Parentheses

Binary Tree Postorder Traversal

Best Time to Buy and Sell Stock 倒着来

Set Matrix Zeroes

Pascal‘s Triangle II 正方向读和反方向读保持不变的区别

Search in Rotated Sorted Array II

Trapping Rain Water 抓住数组的特性 可以排序 可以拿出最大值或者最小值来做参考

Unique Binary Search Trees II 不是溯源的去找根节点,而是重新生成根节点

Anagrams 对于相似的字符串或数组一样,经过排序则是一样的,另外判断是否已经存在一次了,使用标记数组后者Map

Distinct Subsequences 动态规划 通过递推公式确定动态规划的式子

First Missing Positive  数组自操作,通过交换,数值成了索引 A[i] A[A[i]-1] 真是一道好题啊

Word Break 动态规划问题

Largest Rectangle in Histogram 完全没有思路

Maximum Product Subarray

Sqrt(x)

Candy 从波峰到波谷 从波峰到波谷
Scramble 三维数据二维看~~一些corner case 两个字符串的动态规划问题
往往是用一个字符串的长度变化做横坐标,另外一个字符串的长度变化做纵坐标,左右摇摆,上下摇摆,诸如此类方法。如果发现二维还不能解决问题,那么好,我就再加上一维变成三维动态规划问题,如果是一个字符串问题,那就更简单了,横纵坐标都表示的是这个字符串的长度变化

Longest Valid Parentheses 测试用例没写全而且题意没弄明白,所以一直测试过不了,不过倒是学习了不少的新方法,不断的测试,测试你妹啊

Permutation Sequence

解法简直
华丽丽 厉害 凸显编程之美~~数学的思维

Longest Valid Parentheses

不得不说自己距离
动态规划还有好长的路要走,没有了解到核心的方法和内容,做完之后要再整理一番

Find Minimum in Rotated Sorted Array II 这TM的才是二分查找,能用到如此精彩

Divide Two Integers 数字要考虑数字是正数 负数 0 负数转换成正数的时候 数字会出现溢出的现象  (2^k)*除数
<=  当前被除数 <(2^(k+1))*除数
数学真是一种美

MinStack 网易的面试题,当时会了,现在又不会了,真是为自己的智商担心

Maximum Gap 这个题有两个好的地方,所谓平均值的含义就是必定有比平均值大的也有比平均值小的,如何计算桶的idx   当前数字:num =
min + k*bucket_size 由此求idx

对于int 类型的数据
进行取绝对值的时候,一定要记得强转成Long 在进行abs,因为Int负数的最小值,取绝对值后,int类型是存不了的。

BFS的模板 Queue
LinkedList  Boolean isVisited[] ;

Minimum Window Substring 通过HashTable确定字母的数量,然后加上两个指针来回访问,通用的模板。

Find Peak
Element
 原来二分查找随便用,是指上升沿和下降沿的问题啊。又进一步理解了二分查找。抓住特点啊
特点啊 右移的操作用>>1
不要误写成 2

小结:

深度递归(DFS)à考虑可不可以用动态规划来做

到当前为止 字符串往往是到当前字符为止,更新Dp数组(要解决问题的数组),解决方法循环遍历之前的已经计算完的数据解决或者通过对之前的数组进行相加等运算操作进行处理。

划分集合问题,当考虑要遍历所有的子串,所有的自数组问题的时候,可以考虑使用动态规划,从
长度为1的字串或子数组开始,一直遍历到长度问n的字串或者子数组。

链表内部的特点啊,凡是不能该表原始链表的结构,考虑一下,可不可以转换成数学问题,追击问题啊之类的。一个跑一个追,两个一起跑。不让增加空间,只能有开辟两个指针了有木有。真是机智到不行。

思路不好:

Remove Nth Node
From End of List  双指针

Longest
Consecutive Sequence  set集合的使用

3Sum Closest 先排序

Pow(x, n) 移位操作 移动一位的含义

收获:

当不知道怎么对数组进行切分时,往往里面存着对应的数学关系。

回溯就是 选或者不选+递归 也就是DFS DFS把大事化小,小事化了

递归常常结合 交换, 选或者不选 相同的模式 再次进行

除数是0 的情况也得catch 到

动态规划往往可以用填表法完成,同样填表法也有助于发现动态规划的函数表达式

在链表题中,灵活地运用虚拟表头会减少很多工作量
2 链表题往往在收尾处要多判断一下,防止corner case

不满足当前的时间复杂度,还能更快一点,更快一点,分治等策略。

对于计算在一个循环,如循环一个数组或者字符串,在循环中记录一个Max,一定要在循环结束后再一次判断 结尾处是否还需要再次更新Max(开头和结尾是两个需要重要判断的地方)

链表中 常用快慢指针 链表的反转 链表的合并 都是常考的内容

Time Limited 主要有两个原因 1、对于含有循环的例子 有可能有死循环;2、对于递归的问题,有可能是因为递归的返回值弄的不对,导致一直递归无法结束。

值得重写的Code 不太熟

Insertion Sort
List

Remove Duplicates
from Sorted List II  while true 的应用  pre cur next 三者的应用

Recover Binary Search
Tree 论中序 前序 后序遍历的特点

待字闺中:

统计数组中每一个出现的次数的问题 A[i] = A[i] * n ; A[A[i]/n]++;A[i]%n的应用

母串中是否存在字串的任意排列   对于排序后的母串和字串相同--字符串的特点;

树的高度问题 回溯也是一种递归

时间: 2024-10-13 03:28:17

第一次刷leetcode小结的相关文章

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

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

初刷LeetCode的感受

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

准备刷leetcode!

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

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

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

OPPO A7X 刷机小结

OPPO A7X 刷机小结: 概述:根据网上找到的教程(MTK模式刷机教程),没有成功.在QQ上询问一位提供刷机服务的大神,说是只有老版本才能刷. 操作步骤: 刷机工具: MediaTek SP Flash Tool v5.1812.00 (智能手机下载工具)刷机包:OPPO-A7x_PBBM00_11_A.06_180926 官方线刷包 在安装驱动时就不顺利.为此我把系统换成了Windows7 X64 (笔记本的Win7X32也尝试过).但换了系统还是不行,最后自己找的 QcomMtk_Dri

用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++能力. 思考 行动上的勤快人,

python刷LeetCode:28. 实现 strStr()

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