「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」。
前言
今年最后一波月更活动,不拿个参与奖,那多可惜,所以准备了个较为简单的算法七天乐。刚好自己在算法上也是有待加强。
题目描述
题目链接:排序的循环链表
题目描述我用截图leetcode的为主,所以题目如下图
思路分析
在上题中我有个解法函数没写出来 所以搜出相关的链表题去做了一下,补足一下
思路:处理一下边界,如果链表为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;
};
复制代码
总结
链表算是比较常见的算法题,分析了一下之前没成功是当时没想到new Node(),然后使用new NodeList()又不是返回它的next,所以导致失败。
坚持就是胜利。11月第5题算法完成,坚持就是胜利!!!
如果你还有想补充或者说明的欢迎留言评论。
熟能生巧(Practice make perfect!)。
↓↓↓
→ 算法系列链接 ←
↑↑↑
这里可以点!这里可以点!这里可以点!