题解 | #牛群旋转#
更多关于**算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录**,关注**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】题目解答方法的文字分析
- 定义快慢指针
- 模拟思路进行编码: 2.1计算链表长度,获得移动步数 2.2快指针先移动对应步数 2.3快慢指针一起移动,快指针到达结尾,慢指针下一个到达分割点 2.4进行链表拆解和组合 3 合并链表,返回结果
【3】本题解析所用的编程语言:java
【4】完整且正确的编程代码
public ListNode rotateLeft (ListNode head, int k) {
// 模拟思路
//计算链表长度,获取移动步数
int len=0;
ListNode temp=head;
while(temp!=null){
len++;
temp=temp.next;
}
int step=k%len;
//定义快慢指针,快指针先移动step步,m
ListNode slow=head;
ListNode fast=head;
for(int i=step;i>0;i--){
fast=fast.next;
}
//快慢指针一起移动,其中,慢指针的下一步为切分点
while(fast.next!=null){
fast=fast.next;
slow=slow.next;
}
ListNode ret=slow.next;
slow.next=null;
fast.next=head;
return ret;
}
#晒一晒我的offer##如何判断面试是否凉了##软件开发薪资爆料##我的实习求职记录##实习,投递多份简历没人回复怎么办#编程算法题详解集锦 文章被收录于专栏
牛客top101+牛客top202+leetcode热题