本文主要是介绍力扣面试150 旋转链表 闭链成环,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem: 61. 旋转链表
👨🏫 力扣官解
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {// 不用动 或 链表少于两个节点if(k == 0 || head == null || head.next == null){return head;}int n = 1;// 统计链表的元素个数ListNode iter = head;while(iter.next != null){iter = iter.next;n++;}int offset = n - (k % n);// 从头开始数 offset 个,链表断开if(offset == n){return head;}iter.next = head;// 闭链成环// 把 iter 移到第 offset 个节点while(offset-- > 0){iter = iter.next;}ListNode res = iter.next;iter.next = null;// 断环归链return res;}
}
这篇关于力扣面试150 旋转链表 闭链成环的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!