关于javascript:Day-3100-算法-Javascript-模拟实现旋转链表

33次阅读

共计 658 个字符,预计需要花费 2 分钟才能阅读完成。

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

};

正文完
 0