随笔分类 -  LeetCode每日一题

LeetCode每日一题
摘要:题目链接 452. 用最少数量的箭引爆气球 题目分析 这个题其实有点像区间合并的题目,先对气球按照Xstart升序进行排序,然后计算所有气球可以整合成最少的区间数,返回即可。 但是这里这个题有一个坑,就是在自定义排序的时候,不能直接简单使用a-b作为返回条件,因为在最后一个测试用例中,两个数相减会导 阅读全文
posted @ 2020-11-23 09:39 ZJPang 阅读(116) 评论(0) 推荐(0)
摘要:题目链接 147. 对链表进行插入排序 思路分析 这个题,就是插入排序的链表版。做的时候要注意保存当前结点的下结点以及及时断开next指针即可。 代码实现 class Solution { public ListNode insertionSortList(ListNode head) { List 阅读全文
posted @ 2020-11-20 09:28 ZJPang 阅读(76) 评论(0) 推荐(0)
摘要:题目链接 406. 根据身高重建队列 题目思路 这个题给了我们一个二维数组,第二维的含义有两个: 第i个人的身高。 在队列中,第i个人前面有arr[i][1]个人的身高大于或等于自己。 那么这个有点像那个广告牌的做法。首先我们先将数组进行排序,排序规则如下: 如果两者身高相等,那就按照大于或等于自己 阅读全文
posted @ 2020-11-16 16:41 ZJPang 阅读(101) 评论(0) 推荐(0)
摘要:题目链接 129. 求根到叶子节点数字之和 medium 题目分析 这个题要求我们做一个路径上的数字转化为整数,并且求和。那么路径上转化为数字的话我们可以用前序遍历即可,遇到叶子节点就往总和上面加上当前的路径数字。 求和的话有两种方式: 采用全局变量思想进行记录,辅助方法不需要返回值。 使用辅助方法 阅读全文
posted @ 2020-10-29 09:24 ZJPang 阅读(81) 评论(0) 推荐(0)
摘要:题目链接 845. 数组中的最长山脉 Medium 题目分析 这个题的难度纯粹就是吓唬人的。。这个题的思路有很多,可以先找山峰,然后再向左右扩展。我的想法就是在遍历过程中去维护一个双指针,双指针的距离就是当前山脉的长度。 遍历过程中分以下几种情况 如果A[i] > A[i-1],那么这里可以看做山脉 阅读全文
posted @ 2020-10-25 09:39 ZJPang 阅读(114) 评论(0) 推荐(0)
摘要:题目链接 763. 划分字母区间 题目分析 这个题的话,第一眼看还没啥思路,忘了10+分钟才有点想法。。 题目总体的话就类似我们维护一个窗口,不断去拓展这个窗口的右边界,直到当前窗口内的所有字符最后一次出现的位置都在右边界内。 但是在维护的时候要注意下面几个点 如果第一次寻找右边界的时候,字符在串中 阅读全文
posted @ 2020-10-22 09:42 ZJPang 阅读(77) 评论(0) 推荐(0)
摘要:题目链接 925. 长按键入 Easy 题目思路 这个也是个双串匹配的问题,但是是属于较简单的匹配问题。 给定两个字符串,问这两个字符串是否代表同一个内容。 输入typed字符串中可能存在重复输入的键,这个时候我们可以忽略它。 那么我们用双指针去判断即可,其中i代表第一个字符串的浮标,j代表第二个字 阅读全文
posted @ 2020-10-21 09:14 ZJPang 阅读(80) 评论(0) 推荐(0)
摘要:题目连接 116. 填充每个节点的下一个右侧节点指针 题目思路 这个题要求我们以常数级别的空间完成对树中next指针的连接。这个题最容易的思路就是使用中序遍历,在遍历过程中把指针连接上。但是这个题不可以使用额外的空间。 于是我们可以想到另外一个方法,我们在当前层次把下一层次的next指针安排上,因为 阅读全文
posted @ 2020-10-15 09:05 ZJPang 阅读(102) 评论(0) 推荐(0)
摘要:题目链接 1002. 查找常用字符 题目思路 这个题好像也没啥特别的思路,我个人就是使用一个二维数组去存放每个字符串中字符的出现次数(因为题目说只含有小写字母,所以可以直接使用数组),然后再使用一个二重循环,外层遍历小写字母,内层遍历字符串数组长度,去寻找每个字符出现的最少次数,然后再把它加入到结果 阅读全文
posted @ 2020-10-14 09:24 ZJPang 阅读(169) 评论(0) 推荐(0)
摘要:题目链接 75. 颜色分类 题目思路 如果按照平常做法的话这个题的确非常的容易,我们先对数组中的数进行计数,然后再按个插入即可。 但是进阶要求我们使用一趟扫描并且还是常数空间的做法。 那么我们其实可以在第一次扫描数组的时候就把它放置到相应的位置了。因为数组只有0,1,2三种数字,我们其实只需要留意三 阅读全文
posted @ 2020-10-07 16:18 ZJPang 阅读(112) 评论(0) 推荐(0)
摘要:题目链接 117. 填充每个节点的下一个右侧节点指针 II 题目分析 这个题的普通版本其实比较好实现,利用层序遍历去保存当前层的所有节点然后再使用next指针重建链表即可。 但是有个进阶要求:使用常数级别的额外空间,这里就比较的难受了。 其实再看回题目,根节点这层的链表肯定只有一个节点,那么我们可以 阅读全文
posted @ 2020-09-28 09:34 ZJPang 阅读(114) 评论(0) 推荐(0)
摘要:题目链接 47. 全排列 II 题目分析 很明显的回溯问题了,与1的不同在于这个2存在重复的数字。那么我们需要考虑可靠的去重方案。 我们可以先对数组进行预排序,那么我们在回溯过程中,如果选择当前的数字之后,当前轮次的下一个选择的数字就应该是与当前数字不同的那一个,这样可以确保我们不会选出重复的方案。 阅读全文
posted @ 2020-09-18 10:35 ZJPang 阅读(113) 评论(0) 推荐(0)
摘要:题目链接 332. 重新安排行程 思路分析 这个题很明显的是一个图论,题目在给定一个起点的前提下,让我们寻找一条路径 ,能够把当前图中所有的边都走一次,而且这个图还是个有向图。 那么本菜鸡只能想到最原始的方法 先根据输入数据建立邻接链表 对所有的邻接链表进行排序,因为我们需要按照字典序的顺序来访问边 阅读全文
posted @ 2020-08-27 10:41 ZJPang 阅读(117) 评论(0) 推荐(0)
摘要:题目链接 201. 数字范围按位与 题目分析 这个题最容易想到的就是暴力解,从m与到n,如果其中遇到0就直接退出循环。但是这样做最后几个测试用例biss。 然后就需要用到其他的方法了,这里引用其他大佬写的题解 代码实现 class Solution { public int rangeBitwise 阅读全文
posted @ 2020-08-23 09:51 ZJPang 阅读(127) 评论(0) 推荐(0)
摘要:题目链接 647. 回文子串 题目分析 这个题和那个最长回文子串一个道理,可以用中心扩展方法或者DP方法进行处理,这个题我优先使用了DP进行处理。 DP方法 由题目可知,我们每个字符都能成为一个单独的回文串,所以count初始值就应该为字符串的长度。 然后我们定义一个boolean的二维数组,其定义 阅读全文
posted @ 2020-08-19 09:20 ZJPang 阅读(100) 评论(0) 推荐(0)
摘要:题目链接 415. 字符串相加 题目分析 这个题是个简单题,但是代码的写法可以有很多种。最基本的就是双指针同步去进行各位相加,然后用新的循环把多出来的那个数的剩余部分计算完。 这样写的话代码会比较复杂,我们可以把这里合成一个循环,直到所有条件都不符合了才结束,这里所说的条件是以下三个 字符串1长度结 阅读全文
posted @ 2020-08-03 09:20 ZJPang 阅读(110) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/ 这个题是看到被人的面经来刷的。 自己想的dp实现出来是错的,思路完全乱掉了。先贴代码吧。 class Solution { public int longest 阅读全文
posted @ 2020-07-26 10:18 ZJPang 阅读(191) 评论(0) 推荐(0)
摘要:题目链接 64. 最小路径和 题目分析 这个题应该是最容易的DP问题,dp[i][j]取决于dp[i-1][j]和dp[i][j-1]之中的最小值+grid[i][j],这个状态转移反映了当前格子是由左手边还是上边到达的,符合题目中的【只允许往下或者往右走】的特性 代码实现 class Soluti 阅读全文
posted @ 2020-07-23 08:41 ZJPang 阅读(81) 评论(0) 推荐(0)
摘要:题目链接 剑指 Offer 11. 旋转数组的最小数字 题目分析 这个题很明显的二分查找题了,二分查找是最简单的算法,但是也是最难弄明白的算法。 这个题主要的问题是存在了相等的元素,如果遇到了相等的元素我们需要把right指针左移一位,做一个偏移然后再次检查。 然后就是当mid < right的时候 阅读全文
posted @ 2020-07-22 09:36 ZJPang 阅读(89) 评论(0) 推荐(0)
摘要:题目链接 95. 不同的二叉搜索树 II 思路分析 这个题要求我们把树建模出来,那么我们只好对1-n这些数字一个一个进行二叉搜索树建模。 我们利用二叉搜索树的特性,左子树小于根节点、右子树大于根节点的特性进行建立。我们最外围使用1-n中的每一个数字作为根节点,然后递归生成其左子树和右子树。 但是在做 阅读全文
posted @ 2020-07-21 10:22 ZJPang 阅读(99) 评论(0) 推荐(0)