自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Leetcode刷题笔记》22. 括号生成

解决一个问题有好多步,每一步都有多个选项时,用回溯算法,回溯算法是一种树上的dfs,这里的树指的是递归树。回溯大致可分为3类:1.组合、子集 (无序)2.排列(有序)3.搜索例如本题,我们分2n步,每一步有两个选项:左括号or右括号,所以使用回溯算法,本题属于组合问题。按照回溯算法六步骤:1.画递归树,找状态变量2.判断结束条件3.找出选择列表4.判断枝剪5.递归进入下一层6.撤销再回到本问题,首先显而易见结束条件就是凑够了n对括号,即2n个括号,可以判...

2021-10-18 15:50:25 111

原创 《Leetcode刷题笔记》6. Z 字形变换

思路:建立一个和s长度一样的int数组index,标记s中每个字符所在行数。不难总结出所在行数的规律:如果numRows为4,则原字符序列每个字符所在行数为:1234321234 总是到4就递减到1就递增,将index[0]置为1,设置一个指示变量x,x=1代表当前处于递增状态,x=0代表当前处于递减状态,当index[i]==1或numRows时,改变x的值。第一次遍历后得到每个字符的下标,建立一个string数组ans_l,长度为numRows,将s中每个字符加到ans_l[字符对应行]去。最后将an

2021-10-16 13:50:03 99

原创 《Leetcode刷题笔记》38. 外观数列

思路:遍历字符串,统计连续相同字符的个数,如果字符串的部分字段为“33”。那么它的描述就是“23”,我们统计出连续‘3’的个数为2,将2转为字符串再与‘3’拼接即可描述。根据外观数列的特征,不难得出,最多有3位连续相同的数字,2223表示2个2,2个3,不可能出现类似2222的序列。所以外观序列中只会出现123三个数字。代码讲解:i指示当前是第几个外观数列。对于当前的外观数列,令start和end为0,只要end指向字符等于start指向字符,将end+1,到两个不相等或者end超出字符串长度,将此

2021-10-16 12:30:44 96

原创 《Leetcode刷题笔记》82. 删除排序链表中的重复元素 II

方法1:思路:一次遍历,首先插入一个头节点list方便遍历(因为要用到next和next->next,不然如果第一个数重复就凉凉了),令指针a指向list。 遍历链表,如果a的next和next->next值相等,那么我们令x=a->next.val。不断删除next,即a->next = a->next->next,直到next的值不等于x,即删除了所有值为x的节点。时间复杂度:0(n)代码:/** * Definition ...

2021-10-15 13:10:28 94

原创 《Leetcode刷题笔记》61. 旋转链表

方法1:思路:构建一个循环链表1.首先进行第一次遍历求出链表长度len2.第一次遍历到尾节点时,将末尾节点的next指向head,即构建了一个循环链表。3.再令指针a指向head(即a=a->next),进行第二次循环,找到倒数第k+1个节点(此时k已经取余),将head重置为a->next。4.断开连接,将a—>next指向nullptr。时间复杂度:O(n) 两次遍历空间复杂度:O(1)代码:/** * Definition for singly-li

2021-10-14 11:38:46 47

原创 《PAT刷题笔记》1017 A除以B

题目略。思路:本题的做法不可能是直接除,因为A太大了,那么我们模拟手动除法的步骤:1.将输入的a表示为字符串形式,设置一个int i=0指示下标,设置一个余数q,设置一个数组ans保存每一步结果。2.对每个a[i] 我们要计算结果(q*10+a[i]-‘0’)/b 并保存到ans中,然后更新余数。3.i++,然后利用新的余数和a[i]重复上述步骤,当循环结束后q即为最后的余数。本题目可以自己在纸上模拟模拟除法,总结出步骤。代码:#include<iostream&

2021-10-14 09:24:25 142

原创 《Leetcode刷题笔记》53. 最大子序和

思路:动态规划构建一个dp数组,dp[i]表示以nums[i]结尾的最大子序和。则可以想到转移方程dp[i] = max(dp[i-1]+nums[i], nums[i])方程解析:若前一个数为结尾的最大子序和为负数,那么还不如直接以本数一个数的自序和大,那么以本数结尾的最大自序和(即dp[i])即为本身。遍历nums,最后输出dp中的最大值即可。代码:class Solution {public: int maxSubArray(vector<int>&am..

2021-10-13 15:24:44 64

空空如也

空空如也

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

TA关注的人

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