708. Insert into a Sorted Circular Linked List
2022/4/9 6:19:35
本文主要是介绍708. Insert into a Sorted Circular Linked List,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
We use two points to point to two successive nodes, we call them "pre" and "cur"
We need to consider 3 situation need to be considered:
1. the inserted node is between two nodes values -> pre<=insert && insert<=cur
2. the inserted node is larger than all nodes, we need to find the edge of the circle where the pre is larger then cur -> pre>cur && insert>pre
3. the inserted node is smaller than all nodes, we need to find the edge of the circle where the pre is larger then cur -> pre>cur && insert<cur
class Solution { public Node insert(Node head, int insertVal) { if(head==null){ Node insert = new Node(insertVal); insert.next = insert; return insert; } Node insert = new Node(insertVal); Node pre = head, cur = head.next; while(cur!=head){ if(pre.val<=insertVal&&insertVal<=cur.val ||pre.val>cur.val&& insertVal<cur.val ||pre.val>cur.val&& insertVal>pre.val){ insertNode(pre, cur, insert); return head; } cur=cur.next; pre=pre.next; } insertNode(pre, cur, insert); return head; } private void insertNode(Node pre, Node cur, Node insert){ pre.next = insert; insert.next = cur; } }
Or the following codes are more clear and simple:
class Solution { public Node insert(Node head, int insertVal) { Node newNode = new Node(insertVal); if(head==null){ newNode.next = newNode; return newNode; } Node cur = head.next; Node prev = head; while(cur!= head){ if(prev.val <= insertVal && insertVal<= cur.val){ break; } if( prev.val > cur.val && insertVal > prev.val ){ break; } if( prev.val > cur.val && insertVal < cur.val){ break; } prev = cur; cur=cur.next; } prev.next = newNode; newNode.next = cur; return head; } }
这篇关于708. Insert into a Sorted Circular Linked List的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享