首页 > 代码库 > LeetCode——Rotate List
LeetCode——Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given 1->2->3->4->5->NULL
and k = 2
,
return 4->5->1->2->3->NULL
.
得到链表长度,链表指向尾节点,将链表首尾相连,向右k%len,得到结果链表的尾节点。
public class RotateList { public static void main(String[] args) { ListNode head = new ListNode(1); ListNode head1 = new ListNode(2); ListNode head2 = new ListNode(3); ListNode head3 = new ListNode(4); ListNode head4 = new ListNode(5); head.next = head1; head1.next = head2; head2.next = head3; head3.next = head4; // while(head != null){ // System.out.println(head.val); // head = head.next; // } ListNode ln = new RotateList().rotateRight(head, 2); while(ln != null){ System.out.println(ln.val); ln = ln.next; } } public ListNode rotateRight(ListNode head, int n) { if(head == null) return head; int len = 1; ListNode tmp = head; while(tmp.next != null){ tmp = tmp.next; len ++; } tmp.next = head; n %= len; int step = len - n; while(step > 0){ tmp = tmp.next; step --; } head = tmp.next; tmp.next = null; return head; } } // Definition for singly-linked list. class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } }
LeetCode——Rotate List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。