题解 | #牛群的重新排列#
更多关于算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录,关注Fintech砖,持续更新中。https://www.nowcoder.com/users/873777317
企业面试记录专栏https://www.nowcoder.com/creation/manager/columnDetail/0YBWnm
机器学习面经专栏https://www.nowcoder.com/creation/manager/columnDetail/j8nNy0
软件开发面经专栏https://www.nowcoder.com/creation/manager/columnDetail/0aXKaM
【1】题目考察的知识点:链表、虚拟指针
【2】题目解答方法的文字分析
- 判断特殊情况,节点为空或者翻转k为0或者1
- 统计链表长度,计算需要翻转的段数 3在每一段需要反转的链表进行k-1次节点依次翻转 4定义pre、cur、next节点进行翻转。
【3】本题解析所用的编程语言:java
【4】完整且正确的编程代码
public ListNode reverseKGroup (ListNode head, int k) {
//判断特殊情况
if(head==null || k<=1)return head;
//统计链表长度
int len=0;
ListNode node=head;
while(node!=null){
len++;node=node.next;
}
int r=len/k;
//定义头节点虚拟节点
ListNode dummy = new ListNode(-1);
dummy.next=head;
ListNode pre=dummy;
ListNode cur=head;
//递归遍历
for(int i=0;i<r;i++){
for(int j=1;j<k;j++){
ListNode next=cur.next;
cur.next=next.next;
next.next=pre.next;
pre.next=next;
}
pre=cur;
cur=cur.next;
}
return head;
}
#晒一晒我的offer##如何判断面试是否凉了##软件开发薪资爆料##我的实习求职记录##互联网没坑了,还能去哪里?#编程算法题详解集锦 文章被收录于专栏
牛客top101+牛客top202+leetcode热题

