算法刷题计划二----无主题随机刷题5(leetCode)
2021/9/19 22:06:20
本文主要是介绍算法刷题计划二----无主题随机刷题5(leetCode),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
提示:
链表长度在[0, 20000]范围内。 链表元素在[0, 20000]范围内。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeDuplicateNodes(ListNode head) { if(head==null||head.next==null) return head; ListNode p=head,q=head.next; Set<Integer> set=new HashSet<Integer>(); set.add(p.val); while(q!=null) { if(!set.contains(q.val)) { p.next=q; p=p.next; set.add(q.val); } q=q.next; } p.next=null; return head; } }
个人总结: 要勤练。
02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:
给定的 k 保证是有效的。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public int kthToLast(ListNode head, int k) { ListNode p=head,q=head; int c=0; while(c<k-1) { q=q.next; c++; } while(q.next!=null) { p=p.next; q=q.next; } return p.val; } }
个人总结: 下次可以尝试一下递归。
这篇关于算法刷题计划二----无主题随机刷题5(leetCode)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南