自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 LeetCode刷题 31.下一个排列

31. 下一个排列解析:分析, 找到下一个字典序最大排列,那么我们应该从低数位开始修改,例如对于,长度为6的排列,若我们能让它的最低两位排列变大一些,这个排列整体也变大了,修改更高位的排列只能比修改最低两位的排列要大。找到需要修改的最低位排列,如果一个低位排列是单调非增的,那么无法将它变得更大,因此从尾部开始扫描,找到的第一个不是单调非增的低位排列就是我们需要修改的数a[i]a[i]a[i]在修改时,我们应该利用在上一次找到的单调非增排列a[i+1:]a[i+1:]a[i+1:]中选择恰好大于

2021-11-17 15:49:11 70

原创 Leetcode 318最大单词长度乘积

318. 最大单词长度乘积解析:首先可以改进字符串是否包含公共字母的比较,这里可以通过位运算优化,利用位运算为每个字符串生成state,有哪个字母,对应位就置为1,反之为0。在判断时,只需要对state做与运算即可,若为0则不包含重复字母。其次可以在比较次数上优化,这里我没想出来,官方是只保存具有相同state的字符串的length最大值,在此基础上应该还可以对state做筛选,不过会带来额外开销。code:class Solution {public: int maxProduct(

2021-11-17 11:26:00 615

原创 LeetCode刷题-319.灯泡开关

319.灯泡开关解析:初看这道题,会很直观地想到动态规划、模拟等解法,但是由于n<=109n<=10^9n<=109,模拟显然会超时,动态规划又没有explict equation,故而重新思考。在这里每个灯泡间的状态实际上是独立的,它们最后的状态只取决于自己被改变的次数,根据每次操作的性质,我们可以知道,第iii个灯泡一共会被操作f(i)f(i)f(i)次,其中f(i)f(i)f(i)表示iii的因数个数,那么统计每一个灯泡的因数个数即可得到当前灯泡的开关状态。但是统计因数个数

2021-11-15 10:35:00 270

原创 LeetCode00001-00019

2021/08/02Add Two Numbers解析: 非常简单的列表相加问题,一开始弄错为反向列表相加了,绕了点路子key points:每次相加之后要把进位保留下来考虑corner case,即最后一个进位为0时需要删除最后一个节点,不为零时需要保留最后一个节点活用3元表达式缩减代码my answerclass Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l

2021-08-13 10:00:48 90

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除