83. 删除排序链表中的重复元素|刷题打卡
闲时要有吃紧的心思,忙时要有悠闲的趣味
目录
- 题目描述
- 思路分析
- AC 代码
- 总结
题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
思路分析
这是一道简单题,不过对我们这些算法小白来说是个认识链表这一数据结构的不错选择。
那什么是链表呢?我觉得小灰算法讲的不错。没找到电子版,直接拍的照哈。
对于链表的遍历来说,我们只要判断self.next存不存在,存在就往下一个next找,不存在就返回,所以使用while循环。
因为题目中给的是排序列表,所以我们直接判断self.next是不是等于当前的self就行。代码走起。
AC 代码
题解:
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var deleteDuplicates = function(head) {
// 非空判断,如果头节点为空或只有头结点,没必要遍历,直接返回
if(head === null || head.next === null){
return head
}
let now = head
let nextNode = head.next
// 遍历链表的下一个节点
while (nextNode !== null){
// 判断当前是否和下一个的值相等
if(now.val == nextNode.val){
// 如果相等,应该移除下一个(即将当前节点的next指针指向被删除节点的下一个节点)
now.next = nextNode.next
nextNode = nextNode.next
}else{
// 如果不相等,换成下一个值,接着循环
now = nextNode
nextNode = nextNode.next
}
}
return head;
};
总结
很简单的一道题,柿子先挑软的捏……
三月你好,春暖花开。加油!
后记:Hello 小伙伴们,如果觉得本文还不错,记得点个赞或者给个 star,你们的赞和 star 是我编写更多更丰富文章的动力!GitHub 地址
文档协议
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!