本文主要是介绍LeetCode - rotate-list,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given1->2->3->4->5->NULLand k =2,
return4->5->1->2->3->NULL.
题意:
给定一个列表,将该列表向右旋转k个位置,其中k是非负的。
解题思路:
遍历链表得出长度,然后让链表形成环,最后找到k的位置,在他的下一位指向null,断开链表就行。
这里有个坑,就是test case 里面 k 的值会大于链表长度,所以这里我们需要对 count 取余 k = k % count;
Java代码:
public ListNode rotateRight(ListNode head, int n) {if(head == null || n == 0 || head.next == null) {return head;}ListNode dummy = head;int count = 1; while(dummy.next != null) {dummy = dummy.next;count ++;}//成环dummy.next = head;if(n > count) {n = n % count;}for(int i = 0; i < count - n;i++) {dummy = dummy.next;}head = dummy.next;dummy.next = null;return head;}
这篇关于LeetCode - rotate-list的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!