11月算法之循环链表

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」。

前言

今年最后一波月更活动,不拿个参与奖,那多可惜,所以准备了个较为简单的算法七天乐。刚好自己在算法上也是有待加强。

题目描述

题目链接:排序的循环链表

题目描述我用截图leetcode的为主,所以题目如下图

image.png

思路分析

在上题中我有个解法函数没写出来 所以搜出相关的链表题去做了一下,补足一下

image.png

思路:处理一下边界,如果链表为null,直接用新节点去生成一个新的循环链表。 然后就考虑不为null,去判断当前值和下个指针值以及插入值的关系,插入值最大和最小,和中间位置,中间位置需求找到指针上下值刚好大于小于它。

var insert = function(head, insertVal) {
     if(!head){
        let list = new Node(insertVal)
        list.next = list;
        return list;
     }
    let curr = head;
    while(curr.next!=head){
        if((curr.val<=insertVal&&curr.next.val>=insertVal)||
        (curr.next.val<curr.val&&(curr. val<=insertVal||insertVal<=curr.next.val))) {
            break;
        }
        curr = curr.next;
    }
    curr.next = new Node(insertVal,curr.next);
    return head;
};
复制代码

image.png

总结

链表算是比较常见的算法题,分析了一下之前没成功是当时没想到new Node(),然后使用new NodeList()又不是返回它的next,所以导致失败。

坚持就是胜利。11月第5题算法完成,坚持就是胜利!!!

如果你还有想补充或者说明的欢迎留言评论。

熟能生巧(Practice make perfect!)。

567570eb04c107f0a5d6ccf93447999.png

       ↓↓↓

算法系列链接

       ↑↑↑

这里可以点!这里可以点!这里可以点!

猜你喜欢

转载自juejin.im/post/7033763718655639565