- 博客(7)
- 收藏
- 关注
原创 142. 环形链表 II
当n=1时,即快指针只在环内走了一圈,则有x+y=y+z,则x=z:链表头节点到环形链表入口节点的距离等于快慢指针相遇节点到环形链表入口节点的距离,此时只需要定义两个指针index1,index2,一个指向链表头节点,另一个指向快慢指针相遇节点,index1 和index2 分别从出发节点开始一步步走,相遇即为环形链表入口节点。x为链表头节点到环形链表入口节点的距离,y为环形链表入口节点到快慢指针相遇节点的距离,z为快慢指针相遇节点到环形链表入口节点的距离;慢指针距离的2倍等于快指针距离。
2023-06-16 20:11:52
32
1
原创 209. 长度最小的子数组
首先定义两个指针i(窗口结束位置),j(窗口开始位置),sum用来求子数组的和,用i遍历数组对sum求和,当sum>=target时,记录字串长度并更新结果,为确保字串长度最小,需要不断更新指针j;1. 在一些问题中,可以使用滑动窗口来找到一段连续的区间,使得区间中的某些特征满足一定的条件。比如找到最短的子数组使得和大于等于目标值,或者找到最长的子字符串使得其中不同字符的数量不超过K个。虽然Target和滑动窗口的思想略有不同,但在某些场景下可以共用一些技巧和方法,如利用双指针法或前缀和来优化计算。
2023-06-08 17:20:06
31
原创 58. 最后一个单词的长度
首先,定义一个标志flag表示所给字符串是否含有空格,若是不含空格则直接输出字符串长度;,由若干单词组成,单词前后用一些空格字符隔开。更好做法:从末尾往前判断最后一个单词长度。否则定义count记录最后一个单词长度。
2023-06-04 00:55:03
40
1
原创 2. 两数相加
若是l3为NULL,则新建头节点 head=tail=malloc(sizeof(struct ListNode));首先,新建一个l3,l3的头指针(head)和尾指针(tail)先指向NULL,(int)count用来存储进位;待l1和l2均为NULL时,检查count是否为0,为0则代表最后一位小于10。int sum=l1对应节点val+l2对应节点val+count。若是l1和l2均不为NULL;若count>0,需新建一节点存储count。更新l1和l2指针指向。
2023-05-30 00:46:55
29
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人