Leecode题知识点(25,61,82)

第25题:K 个一组翻转链表
主体函数
举例:1>2>3>4>5 k=3
ListNode end=prev; for(int i=0;i<k&&end!=null;i++){ end=end.next; }
先让end和prev相等
然后遍历,让end往下走
if(end==null)break;
end到头了,就断开
ListNode nextgroup=end.next;
给断开后的起名叫nextgroup
ListNode start=prev.next; end.next=null;//把划分好的单独切了出来 prev.next = reverse(start);
翻转以K为准划分好的那段

start.next = nextgroup;

翻转前的 start = 1,现在变成了这一组的尾巴。让它指向下一组的开头

prev = start;

现在这一组已经翻转完成,prev 要移动到这一组的尾巴,作为下一组翻转时的「前置节点」。
翻转逻辑:
举例:1>2>3>4
prev=null ,curr=head(1)
while(curr!=null){
ListNode next=curr.next(next=2) //断开,保存后面的节点
curr.next=prev; //改变指针的方向
现在:
1>null
2>3>4>null //断开后的结果
prev=curr; //prev前进。prev=1
curr=next;//curr前进。curr=2
接着进行第二次循环
ListNode next=curr.next(next=3)
curr.next=prev; //curr=2,让curr.next=1(2>1)
现在:
2>1>null;
3>4null;
prev=curr; //prev前进。prev=2
curr=next;//curr前进。curr=3
第三次循环
ListNode next=curr.next(next=4)
curr.next=prev; //curr.next=2
现在:
3>2>1>null
4>null
prev=curr; 3
curr=next; 4
第四次循环
ListNode next=curr.next;
curr.next=prev;
现在:
4>3>2>1>null
不满足循环条件curr!=null,退出循环
第61题:旋转链表
1.计算链表长度
遍历链表,得到长度为n
注意:如果k>=n,其实就是k%n次旋转

2. 找到新头和新尾

新尾节点应该是 第 (n - k) 个节点。
新头节点就是新尾的下一个节点。
例子:
n = 5, k = 2
新尾 = 第 5-2=3 个节点(值是 3)
新头 = 3.next = 4

3. 改指针

先断开在新尾的位置。
把原来的尾巴(值 5)指向原来的头(值 1),形成一个环。
1 → 2 → 3 → 4 → 5
↑ ↓ ------------> 4 → 5 → 1 → 2 → 3
└───────────┘
这里4也会被5带过去,因为4的next指向是5

k % n 的性质

如果 k < n 那么 k % n = k,等于什么都没做。

如果 k >= n 那么 k % n 会自动把它缩小到 0, n-1 的范围内。
所以 k = k % n; 一行代码,就已经同时处理了 k < n 和 k >= n 两种情况。


举例

假设 n = 5:
k = 2 → k % n = 2

k = 5 → k % n = 0(旋转一整圈,不需要动)

k = 12 → k % n = 2

k = 0 → k % n = 0
可以看到,取模运算天然就包含了 if (k >= n) 的逻辑。
第82题:删除排序链表中的重复元素||
while(curr!=null){ boolean duplicate=false;
假设没有重复,如果有重复为true
if (duplicate) {
// duplicate 是 true 执行这里
} else {
// duplicate 是 false 执行这里
}

相关推荐
2601_967979121 小时前
机器学习必修课:经典算法与Python实战
python·算法·机器学习·实战·课程
程序猿打工仔1 小时前
计算机基础(C语言)考编、专技岗
c语言·开发语言·算法
通信小呆呆2 小时前
电子战干扰技术:从“蛮力压制”到“精准欺骗”,再到“认知博弈”
算法·通信·isac
老师我太想进步了20262 小时前
【数据结构-6】算法美学之单链表(1)
数据结构·算法
希望我万事顺遂3 小时前
力扣hot100-滑动窗口最大值
数据结构·算法·leetcode
꧁细听勿语情꧂4 小时前
二叉树余题,排序、直接插入排序、希尔排序
c语言·开发语言·数据结构·算法
是main不是漫4 小时前
【双指针|LeetCode1089 复写零】巧用逆向思路,破解原地覆盖陷阱
数据结构·算法·leetcode
专注仿真14 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
罗西的思考15 小时前
【轻量化复刻大模型 / KIMI K3】AttnRes 模块交互式演示
人工智能·算法·机器学习
好悬给我拽开线18 小时前
ZILOT 论文解析
算法