随笔分类 -  leetcode

摘要:参考负雪明烛大佬对此的讲解。喜欢的可以多关注这个大佬,对leetcode题解做的很充分详细了。(链接:https://leetcode-cn.com/problems/generate-parentheses/solution/ru-men-ji-bie-de-hui-su-fa-xue-hui-t 阅读全文
posted @ 2020-04-10 01:00 是凉城吖 阅读(190) 评论(0) 推荐(0) 编辑
摘要:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+ 阅读全文
posted @ 2020-04-08 20:23 是凉城吖 阅读(213) 评论(0) 推荐(0) 编辑
摘要:直接暴力法可解,效率非常低。 考虑的改进方法就是动态规划方法和双指针法,思路基本差不多,详细参见leetcode:https://leetcode-cn.com/problems/trapping-rain-water/solution/dong-tai-gui-hua-shuang-zhi-zhe 阅读全文
posted @ 2020-04-04 17:01 是凉城吖 编辑
摘要:括号匹配的问题一般都是根据栈来实现的,栈内放入括号进行匹配。 文中具体思路见leetcode解析。 知道如何计算嵌套深度,问题就很简单了:只要在遍历过程中,我们保证栈内一半的括号属于序列 A,一半的括号属于序列 B,那么就能保证拆分后最大的嵌套深度最小,是当前最大嵌套深度的一半。要实现这样的对半分配 阅读全文
posted @ 2020-04-01 23:21 是凉城吖 阅读(171) 评论(0) 推荐(0) 编辑
摘要:思路:如果X是Y的后缀,那么X就可以删掉,生成的字符长度最短就不需要Y,由数据范围可知一个单词最多含有 7 个后缀,所以我们可以枚举单词所有的后缀。对于每个后缀,如果其存在 words 列表中,我们就将其从列表中删除。为了高效删除,我们将 words 用哈希集合(HashSet)来存储。 个人刚开始 阅读全文
posted @ 2020-03-28 23:24 是凉城吖 阅读(126) 评论(0) 推荐(0) 编辑
摘要:完全二叉树和满二叉树的区别:如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。 由于题中已经告诉我们这是一颗完全二叉树,我们又已知了完全二叉树除了最后一层,其他层都是满的,并且最后一层的节点全部靠向了左边。那我们可以想到,可以将该完全二叉树可以分割 阅读全文
posted @ 2020-03-22 23:52 是凉城吖 阅读(424) 评论(0) 推荐(0) 编辑
摘要:最近找到一位大佬的算法小抄,里面对这一类算法进行非常深刻细致的总结。(非科班到算法大佬,真的很羡慕嗷) 相关链接:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie (觉得解释的很好,经典题型重新拿出来理解,再去leetcode刷点题 阅读全文
posted @ 2020-03-17 14:25 是凉城吖 阅读(124) 评论(0) 推荐(0) 编辑
摘要:DFS算法:一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!n)。 DFS算 阅读全文
posted @ 2020-03-15 23:36 是凉城吖 阅读(152) 评论(0) 推荐(0) 编辑
摘要:旋转数组的大概意思就是:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋 阅读全文
posted @ 2020-03-15 00:38 是凉城吖 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1.暴力法,思路比较简单,复杂度O(N*K) 2.用双端队列进行展示 想到双端队列的思路:只要遍历该数组,同时在双端队列的头去维护当前窗口的最大值(在遍历过程中,发现当前元素比队列中的元素大,就将原来队列中的元素祭天),在整个遍历的过程中我们再记录下每一个窗口的最大值到结果数组中。这样就是遍历数组的 阅读全文
posted @ 2020-03-14 22:53 是凉城吖 阅读(123) 评论(0) 推荐(0) 编辑
摘要:题解链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/er-cha-shu-zui-da-lu-jing-he-qiu-shu-de-zui-chang-/ 阅读全文
posted @ 2020-03-12 00:15 是凉城吖 阅读(99) 评论(0) 推荐(0) 编辑
摘要:假设我们知道对于该节点的左儿子向下遍历经过最多的节点数 L (即以左儿子为根的子树的深度) 和其右儿子向下遍历经过最多的节点数 R (即以右儿子为根的子树的深度),那么以该节点为起点的路径经过节点数的最大值即为 L+R+1 我们记节点 node 为起点的路径经过节点数的最大值为dnode,那么二叉树 阅读全文
posted @ 2020-03-11 00:01 是凉城吖 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1、动态规划 首先单个字符就是一个回文子串,如果两个字符都相同就是一个回文子串,三个字符是在一个字符的左右两边加上相同字符而成的回文子串,四个字符是两个字符左右两边加上相同字符形成的回文子串。 不妨以单个字符和双个字符为初始条件去构造动态方程: dp[i][i]=1;//单个字符 dp[i][i+1 阅读全文
posted @ 2020-03-10 12:33 是凉城吖 阅读(118) 评论(0) 推荐(0) 编辑
摘要:具体思路参考链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/solution/yi-wen-jie-jue-4-dao-sou-suo-xuan-zhuan-pai-xu-s-2/ code-33: 题中给明O(n 阅读全文
posted @ 2020-03-09 22:25 是凉城吖 阅读(141) 评论(0) 推荐(0) 编辑
摘要:恢复内容开始 1、暴力法 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NU 阅读全文
posted @ 2020-03-09 16:49 是凉城吖 阅读(107) 评论(0) 推荐(0) 编辑
摘要:要点: 1、计算旋转的次数rot=k%len 2、链表尾部要链接头部构成循环条件,才能输出完整的循环链表 3、在头部放指针分别遍历一定次数,寻找到头尾,再将尾部链接下一个元素断开又形成了单链表。 1 public ListNode rotateRight(ListNode head, int k) 阅读全文
posted @ 2020-03-09 12:44 是凉城吖 阅读(131) 评论(0) 推荐(0) 编辑
摘要:1、注意链表结点的申请格式和头指针的运用 2、注意每位相加的时候考虑进位的问题 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNo 阅读全文
posted @ 2020-03-09 09:26 是凉城吖 阅读(126) 评论(0) 推荐(0) 编辑
摘要:三数之和问题是经典型两数之和的问题的升级版,用常规思路来看,两数之和需要O(n2),三数之和需要O(n3)。 显然有复杂度更简单的方法:排序+双指针。 对排序好的数组,我们将有序的三个数最左边(A)就是最小的放在一边,然后将中间的数(B)和最右边的数(C)分别用指针指向,显然B最小从A的下一位数开始 阅读全文
posted @ 2020-03-08 09:33 是凉城吖 阅读(338) 评论(0) 推荐(0) 编辑
摘要:1、快慢指针解法 假如该链表是循环链表,那我们可以定义两个指针,一个每次向前移动两个节点,另一个每次向前移动一个节点。这就和田径比赛是一样的,假如这两个运动员跑的是直道,那快的运动员和慢的运动员在起点位于同一位置,但快的运动员必将先到达终点,期间这两个运动员不会相遇。而如果绕圈跑的话(假设没有米数限 阅读全文
posted @ 2020-03-06 20:10 是凉城吖 阅读(107) 评论(0) 推荐(0) 编辑
摘要:动态规划 dp[i]=dp[i-1]+nums[i] (dp[i-1]>0) nums[i] (dp[i-1]<=0) 贪心法 分治法(取数组中心为重点,左边和右边各进行贪心取最大值,跨中心的情况在根据中心点左边和右边去进行分治) https://leetcode-cn.com/problems/m 阅读全文
posted @ 2020-03-06 12:39 是凉城吖 阅读(88) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩