明天是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};