LeetCode题解
LeetCode题解
小滔撸起袖子加油卷
道路段段美好总是血与汗成就
展开
-
LeetCode题解—1004.最大连续1的个数III,滑动窗口简单模板
在题解里学习到了一个滑动窗口模板,十分有用。 在这个题目里,把问题抽象出来就是要找到一个最多含有K个0的最长子数组。 用left和right标记子数组的左端和右端。 既然子数组里最多K个0,那只要0的个数没有超过K个,子数组的长度就可以继续延伸,right++。 最重要的是当子数组里的0的个数超过了K个,left就向右移动,知道子数组里的0的个数不多于K个。 子数组的最大长度用right-left+1就可得出。 class Solution { public: int longestOnes(ve.原创 2021-02-20 15:22:06 · 187 阅读 · 0 评论 -
LeetCode题解—424.替换后的最长重复字符,用最长的时间换来最简单的方法
解题思路 这道题和最长子序列有相似之处,可以理解为先把最长子序列找出来,在找的过程中就可以利用替换来增加子序列的长度,也可以理解为在还有替换次数的情况下可以忽视遇到的不相同的元素。 以上是大概思路。 首先是找升级版的最长子序列,因为可以替换。逐个遍历下去判断即可,这是最简单的方法了,暴力解决。 找完之后,如果还有替换次数没用完,那就继续换,length++。最后得到结果 最后我的时间是1304ms,击败5%的人哈哈哈哈哈哈哈。 class Solution { public: int charact原创 2021-02-02 18:24:52 · 272 阅读 · 0 评论 -
Leetcode题解—2.两数相加
这个题两个序列都是倒序,而结果也是要倒序,这分明就是让要按着链表顺着来做,负负得正嘛。 如果求出每个链表的实际数值是不可行的,用例里会有unsigned都放不下的值,考虑逐个相加,用变量记录进位。 在两个链表的公共长度里,逐个相加,用sum记录进位给下一个相加时加上1,直到其中一个链表走完。 因为两个链表是不等长的,所以要么是l1长要么是l2长要么是等长,用三个判断进入不同的操作。判断后的操作大同小异,最关键是注意最后一位的进位,若有,要另外申请结点。 /** * Definition for singl原创 2021-02-01 17:09:31 · 114 阅读 · 0 评论