明天是LeetCode算法题
https://leetcode-cn.com/probl...
解题前须要理解算法构造:
1、链表的构造
/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */
构造相似上面:
{value:val,next:{value:val2,next:null}}
2、输出的head其实不是数组模式的,而是下面的构造
之后按构造模仿链表,其中,思路是造成闭环,再断开;
解法还有快慢双指针;
这个图例还蛮清晰的;
https://leetcode-cn.com/probl...
仿写的代码如下:
var rotateRight = function(head, k) { //ListNode的节点构造为{value:val,next:{value:val2,next:null}} if(!head||!head.next||!k){ return head } //获取链表长度 let len=1 let tmp=head while(tmp.next){ tmp=tmp.next len ++ } //造成闭环 tmp.next=head let gap=len-k%len //找到切分的节点 while(gap){ tmp=tmp.next gap -- } let res=tmp.next tmp.next=null return res};