算法
文章平均质量分 74
Allen_Ming
这个作者很懒,什么都没留下…
展开
-
周报1.3
第一天:19. 删除链表的倒数第 N 个结点1.收获:当利用双指针时,快指针先行n步,在快指针遍历完时,慢指针刚好到倒数第n个结点,且想要返回慢指针遍历的结果时,应该返回他所指向的链表,并不是返回slow.next,此时slow.next为空(最后慢指针也会遍历完整个链表,最后一次指向的NULL)classSolution:defremoveNthFromEnd(self,head:ListNode,n:int)->ListNode:du...原创 2022-02-14 00:01:53 · 697 阅读 · 0 评论 -
周报1.2
题目:第一天:707. 设计链表收获,在使用head时,要先将self.head赋值给head,才能对head进行操作,在add和delete之后要改变链表的长度,range()函数是从0开始的classNode:def__init__(self,val):self.val=valself.next=NoneclassMyLinkedList:def__init__(self):...原创 2022-02-07 14:54:42 · 248 阅读 · 0 评论 -
周报1.1
题目:第一天:剑指 Offer 34. 二叉树中和为某一值的路径第二天:剑指 Offer 36. 二叉搜索树与双向链表第三天:11. 盛最多水的容器第四天:704. 二分查找27. 移除元素第五天:209. 长度最小的子数组第六天:59. 螺旋矩阵 II第七天:203. 移除链表元素收获:1.在要返回多个列表组成的列表时要先pop()列表中的元素:classSolution:defpathSum(self,root:TreeNo...原创 2022-01-31 23:02:52 · 242 阅读 · 0 评论 -
学习日记--剑指 Offer 52. 两个链表的第一个公共节点
题干:输入两个链表,找出它们的第一个公共节点。思路:首先根据示例可以发现有两个节点值相等的点,但是并不是公共节点,所以考虑比较的是整个节点,包括node.val,node.next以及node自带的一些信息包括该node在内存中的物理地址等等,所以比较的时候就是node比较,不是node.val比较设置两个指针:第一个先遍历node1,再遍历node2第二个先遍历node2,再遍历node1当node1=...原创 2022-01-09 14:47:14 · 275 阅读 · 0 评论 -
408-数据结构部分知识点总结
由于时间的原因,这次只写完了,树,查找,排序这三章的一些自己容易混淆的知识点。图的部分单独补上,绪论和一些线性结构的部分就暂时不写了。树:深度:从上到下高度:从下到上路径:从上到下性质:1.节点数 = 度数 + 12.m度第i层至多又m^(i-1)个节点3.h的m叉树,至多由(m^h-1)/(m-1)个节点4.n个节点的m叉树 h(min)= logm (n*(m-1)+1) 向上取整满二叉树:有2^h - 1个节点 ,i的双亲为i / 2 向下取整,原创 2021-09-13 15:18:36 · 904 阅读 · 0 评论 -
学习日记--leecode 118
题干:给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。思路:杨辉三角的每一行的第一个数和最后一个都是1,第i行第j列个数res[i][j]=res[i-1][j]+res[i-1][j-1];另外根据题目给出的注释部分,可以看出*returnSize是表示用来返回数组大小的一个数组,*returnColumnSizes则是储存杨辉三角中的每一行元素的个数源码:/**...原创 2021-08-24 10:48:04 · 163 阅读 · 0 评论 -
学习日记--leecode 隐藏条件
数据范围 时间复杂度 算法 20 O(2^n) 搜索 状态压缩 50 O(n^4) 200 O(n^3) Floyd 最短路 最大流 2000 O(n^2) 20000 O(nlogn) 栈 ST...原创 2021-08-23 11:29:46 · 114 阅读 · 0 评论 -
学习日记--leecode 1771
题干:给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串:从 word1 中选出某个 非空 子序列 subsequence1 。从 word2 中选出某个 非空 子序列 subsequence2 。连接两个子序列 subsequence1 + subsequence2 ,得到字符串。返回可按上述方法构造的最长 回文串 的 长度 。如果无法构造回文串,返回 0 。字符串 s 的一个 子序列 是通过从 s 中删除一些(也可能不删除)字符而不更改其余字符的顺序生成的字符串原创 2021-08-23 11:04:48 · 96 阅读 · 0 评论 -
学习日记--leecode 345
题干:给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。思路:利用双指针,从头和尾两个方向来寻找第一个元音字母,两个元音字母都找到以后将两个元音字母交换位置,再移动数组位置,进行下一次的寻找。直到头和尾相等的时候结束循环,returns源码:方法一:charvowel[]="aeiouAEIOU";//判断是否是元音字母boolisVowel(ch...原创 2021-08-20 10:42:23 · 86 阅读 · 0 评论 -
学习日记--leecode 522
题干:可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:'A':Absent,缺勤'L':Late,迟到'P':Present,到场如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:按 总出勤 计,学生缺勤('A')严格 少于两天。学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。给你一个整数 n ,表示出勤记录的长度(次数)。请你返回记录长度为 n 时,可能获得出勤奖励的记录情况 数量 。原创 2021-08-19 11:09:12 · 96 阅读 · 0 评论 -
学习日记--leecode 20
题干:给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。思路:左半部分'(','['.'{'出现时,可直接入栈,右半部分出现时,不能直接入栈,当上一个栈顶和数组中的元素组成一组括号时,栈顶出栈。其他情况返回false。若最后栈为空栈时,返回ture,若不为空栈,返回false。源码:boolisValid(char*s){bo...原创 2021-08-16 12:48:29 · 94 阅读 · 0 评论 -
学习日记--leecode 233
题干:给定一个整数n,计算所有小于等于n的非负整数中数字1出现的个数。原理:个位出现1的规律:每增加10个数,产生一个1,总数=n/10+1+修正值十位出现1的规律:每增加100个数,产生10个1,总数=(n/100)*10+10+修正值百位出现1的规律:每增加1000个数,产生100个1,总数=(n/1000)*100 + 100 + 修正值其他同理。修正值:考虑十位时,例如100<=n<110,(n/100)*10+10=20,实际上只有1*...原创 2021-08-14 16:12:36 · 121 阅读 · 0 评论