什么是网站关键字优化,手机怎么建立微信公众号,工程造价价格信息网,wordpress照片记录模板目录
一、题目描述
二、整体思路
三、代码 一、题目描述 原题链接
二、整体思路 首先发现这样的规律#xff1a;当k大于等于链表中节点总数n时#xff0c;会发现此时旋转后的链表和kk%n时的旋转后的链表一样。同时对于特殊情况n0和n1时#xff0c;无论k的值为多少都可以… 目录
一、题目描述
二、整体思路
三、代码 一、题目描述 原题链接
二、整体思路 首先发现这样的规律当k大于等于链表中节点总数n时会发现此时旋转后的链表和kk%n时的旋转后的链表一样。同时对于特殊情况n0和n1时无论k的值为多少都可以直接返回head。 因为k的所有取值情况都可以通过规律化归解决同时旋转后的链表元素依然为原来链表中的元素且后续节点顺序与原链表相同。因此我们可以在链表尾部再接上一个和原来链表一模一样的链表找到旋转k次之后的头结点再从此截取原链表长度的结点作为返回值。 n-k的由来旋转k次代表从链表尾部往前数第k个结点为新的头结点那么从链表头往后数就是第n-k个结点。 三、代码
/*** 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(headnull || head.nextnull) return head;int n1;ListNode nxthead;ListNode lasthead;while(last.next!null){lastlast.next;n;}if(k%n0) return head;last.nextnxt;for(int i0;in-(k%n);i){headhead.next;}ListNode rethead;for(int j1;jn;j){retret.next;}ret.nextnull;return head;}
}