
LeetCode讲解
讲一讲校招常考的一些编程题,望大家海涵
Teacher_HENG
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode讲解专栏说明
此专栏仅大致讲解部分LeetCode编程题思路,同时会讲解代码 不一定每个题都是最优解,仅提供一些常见思路,请大家海涵 如部分题有更好易懂的解法,则同时奉上 题目按照考点类型划分,目前未整理,如需请自行翻阅查找,等待完工后会推出整理目录 如有纰漏的地方,请大家评论纠正,请大家见谅 这将是一次长征,希望我能及时更新 ...原创 2020-02-18 02:46:52 · 228 阅读 · 0 评论 -
【栈与队列】232. 用栈实现队列
原题链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/ 分析和 225. 用队列实现栈 一样,只不过交换一下思考的角度而已 同样我们需要两个栈来实现队列 入队操作:此处一律默认将元素入栈到stackA中 出队操作:无非获取stackA的栈底元素1,则将所有元素从stackA出栈再入栈stackB,sta...原创 2020-03-12 10:32:18 · 647 阅读 · 0 评论 -
【栈与队列】225. 用队列实现栈
原题链接:https://leetcode-cn.com/problems/implement-stack-using-queues/ 队列是先进先出,栈是先进后出 但是两者共同点是,无论入队操作还是入栈操作,都是将元素进行尾插法进入的 无非出队操作的是第一个元素,出栈操作的是最后一个元素 栈的出栈操作无非就是获取队列的队尾元素 如果使用队列实现出栈操作,只能先将队尾元素之前的元素移...原创 2020-03-12 09:59:09 · 598 阅读 · 0 评论 -
【数组相关】766. 托普利茨矩阵
原题链接:https://leetcode-cn.com/problems/toeplitz-matrix/ 主要找到每个从左上到右下的开头即可,所以大致可以将矩阵分为两个部分 绿色区域我们设定开头从第1行找;黄色区域我们设定开头从第1列找(抛去第1行第1列) 如上图所示,先找到绿色区域的开头,然后在从每一个开头开始向右下连续相等判断;再找到黄色区域的头,然后在从每一个开头开始向...原创 2020-03-11 10:16:20 · 635 阅读 · 0 评论 -
【数组相关】35. 搜索插入位置
原题链接:https://leetcode-cn.com/problems/search-insert-position/ 典型的二分查找算法,不太懂的自行百度吧 class Solution { public int searchInsert(int[] nums, int target) { if(nums==null||nums.length==0){ ...原创 2020-03-11 09:57:24 · 505 阅读 · 0 评论 -
【数组相关】724. 寻找数组的中心索引
原题链接:https://leetcode-cn.com/problems/find-pivot-index/ 从左到右一个个找吧,只不过并不需要每次寻找一个中心索引,都要计算左边和右边的和 我们可以先将数组的总和 sum 求出来,如示例1所示,总和 sum=28 接着来看 当中心索引 i=0 时 左边的和 leftSum=0 右边的和 rightSum=sum-leftSum-n...原创 2020-03-11 09:52:44 · 576 阅读 · 0 评论 -
【数组相关】674. 最长连续递增序列
原题链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/ 同样还是双指针的应用,思路和 【209. 长度最小的子数组】很像 设置maxCount为最大的连续长度maxCount=1(一个数字也算连续) 设置count为当前的连续长度,如果count>maxCount 则更新max...原创 2020-03-11 09:34:32 · 253 阅读 · 0 评论 -
【数组相关】209. 长度最小的子数组
原题链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/ 双指针滑窗技巧的典型应用 设定一个长度len=0,用来统计最短的数组长度;设定一个sum=0,用来计算和;s=7; 然后从第1个元素开始,来吧 此时sum=sum+nums[0]=2,不满足>=s,则接着往后加 此时sum ...原创 2020-03-11 09:07:02 · 257 阅读 · 0 评论 -
【数组相关】80. 删除排序数组中的重复项 II
原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/ 该题思路借鉴【283. 移动零】 class Solution { public int removeDuplicates(int[] nums) { int i = 0; for (int n...原创 2020-03-05 11:20:40 · 201 阅读 · 0 评论 -
【数组相关】66. 加一
原题链接:https://leetcode-cn.com/problems/plus-one/ 不建议将数组中的数字拼接成整数计算,这样的话会导致整形溢出。 在操作的时候,注意一下进位的问题 例如[1,2,9]+1=[1,3,0] 例如[1,9,9]+1=[2,0,0] 特殊的[9,9,9]+1=[1,0,0,0] 也就是说如果数组中全是9,则计算出来的数组长度比原先多1,且第一个元...原创 2020-03-05 11:09:05 · 199 阅读 · 0 评论 -
【数组相关】240. 搜索二维矩阵 II
原题链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/ 不利用特性的话,遍历二维数组查找,时间复杂度为O(m*n); 利用特性1,每行都进行一次折半查找,那么我们的时间复杂度为O(m*logn); 那如果加上特性2呢?问题是如何利用特性2。 matrix[0][0]也就是1,右边比它大,下边比它也大; matrix[0...原创 2020-03-05 10:40:14 · 212 阅读 · 0 评论 -
【数组相关】88. 合并两个有序数组
原题链接:https://leetcode-cn.com/problems/merge-sorted-array/ 该题的核心问题是,到底是从左到右遍历操作数据,还是从右到左遍历。 不妨先设定一个规则,如果nums2中的某个元素大于等于nums1中的某个元素,则移动nums2中的该元素;否则移动nums1中的元素。 按照从左到右遍历来说,问题就在于,nums2[0]也就是2,nums1[...原创 2020-03-05 10:18:53 · 299 阅读 · 0 评论 -
【数组相关】1013. 将数组分成和相等的三个部分
原题链接:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/ 反证法,就假设当前数组可以被分为3部分,所以先计算总和 sum ,在计算每个部分的值 key=sum/3 然后数组从左到右遍历,每遍历一个元素,则让key减去它,直到key减为0,计数出现一组 group=1,key再...原创 2020-02-20 22:15:13 · 341 阅读 · 0 评论 -
【数组相关】485. 最大连续1的个数
原题链接:https://leetcode-cn.com/problems/max-consecutive-ones/ 借助选择排序的思想,当前和之后的元素进行比较,如果连续是1就累加,最终得到最大的累加即结果 动画如下: class Solution { public int findMaxConsecutiveOnes(int[] nums) { if ...原创 2020-02-20 21:57:07 · 280 阅读 · 0 评论 -
【数组相关】26. 删除排序数组中的重复项
原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 此题思路借鉴【283. 移动零】 class Solution { public int removeDuplicates(int[] nums) { int n = 0; for(int i = 1...原创 2020-02-20 01:16:41 · 192 阅读 · 0 评论 -
【数组相关】27. 移除元素
原题链接:https://leetcode-cn.com/problems/remove-element/ 该题思路借鉴【283. 移动零】,将283移动的0元素当成这里的指定元素 val 即可,哈哈,直接上代码了 class Solution { public int removeElement(int[] nums, int val) { if (nums =...原创 2020-02-20 01:12:25 · 273 阅读 · 0 评论 -
【数组相关】283. 移动零
原题链接:https://leetcode-cn.com/problems/move-zeroes/ 关键信息: 将0移动到数组后方 保证非零元素相对位置 必须原地修改 解法类似于选择排序,从第1个0元素开始,向后找直到第1个非0元素,交换两者位置之后,接着移动到第2个0元素继续向后找非0元素两者交换,依次类推,直到所有数据找完为止。 但是如果按照上述步骤套用选择排序的代码去做的话,...原创 2020-02-20 01:04:10 · 223 阅读 · 0 评论 -
【数组相关】169. 多数元素
原题链接:https://leetcode-cn.com/problems/majority-element/ 此题需要我们找的就是数组中出现次数大于数组长度一半的数字,并且保证该数字一定存在 如何找出来的,有些想法是将数组进过排序后,查找连续相等最长的那个数字即可 比如数组[2,2,1,1,1,2,2]经过排序后得到[1,1,1,2,2,2,2],那么接下来只需要遍历判断那个数字连续相...原创 2020-02-18 22:30:56 · 262 阅读 · 0 评论 -
【数组相关】905. 按奇偶排序数组
原题链接:https://leetcode-cn.com/problems/sort-array-by-parity/ 此题的目的就是将数组中的元素从左到右按照偶数在前,奇数在后进行排布 对于类似的一前一后的问题,我们可以使用头尾指针来解决 大致思想如何呢,看图说明: start为头指针开始指向第一个元素,即 start=0 end为尾指针开始指向最后一个元素,即 end=A.l...原创 2020-02-18 04:29:37 · 719 阅读 · 0 评论 -
【数组相关】1313. 解压缩编码列表
原题链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list/ 示例其实已经给出了详细的解释,无非角标为偶数位的数字是某个元素出现的次数 所以当我们在解压的时候,得到的新数组arr的长度len就是这些角标为偶数位的数字之和,即 len=nums[0...原创 2020-02-18 03:40:09 · 206 阅读 · 0 评论 -
【数组相关】1295. 统计位数为偶数的数字
原题链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/ 此题唯一的难点在于计算数组当中每个数字的长度 如果借助String解题的话,会更加方便一点,将数组中的每个数据nums[i]拼接上一个空串"" String s=nums[i]+""; 紧接着获取s的长度即可得到数字的长度 ...原创 2020-02-18 03:25:26 · 398 阅读 · 0 评论 -
【数组相关】561. 数组拆分I
原题链接:https://leetcode-cn.com/problems/array-partition-i/ min(a,b)函数返回的结果是a和b之间的最小值 就拿题目给出的数组[1,4,3,2]来说,可能的所有组合有 min(1,2)+min(3,4)=1+3=4 min(1,3)+min(2,4)=1+2=3 min(1,4)+min(2,3)=1+2=3 从中可以看出第1...原创 2020-02-18 03:08:48 · 228 阅读 · 0 评论