资讯专栏INFORMATION COLUMN

LeetCode刷题83-简单-删除有序链表的重复项

henry14 / 1194人阅读

☀️ 前言 ☀️

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

? 作者简介 ?

大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!

? 博客主页:❤布小禅❤
? 作者专栏:
❤Python❤
❤Java❤

❤力扣题❤

这是我刷第 51/100 道力扣简单题

? 一、题目描述 ?

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。

示例1:

输入:head = [1,1,2]输出:[1,2]

示例2:

输入:head = [1,1,2,3,3]输出:[1,2,3]

提示:链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序排列

? 二、题目解析 ?

思 路 1 : /color{green}{思路1:} 1

首先考虑特殊情况当只有0或者1个节点时,返回本身
将头结点copy给一个变量
遍历链表,如果当前值与下一个值相同,则将当前节点的下一节点指向下下一节点
否则就更新变量
最后返回copy的头结点

? 三、代码 ?

☁️ 1️⃣. python ☁️

# Definition for singly-linked list.# class ListNode:#     def __init__(self, val=0, next=None):#         self.val = val#         self.next = nextclass Solution:    def deleteDuplicates(self, head: ListNode) -> ListNode:        ans = head         # 将头结点copy给一个变量        if head==None or head.next == None: return head        # 首先考虑特殊情况当只有0或者1个节点时,返回本身        while head.next != None:            # 遍历链表            if head.val == head.next.val: head.next = head.next.next # 如果当前值与下一个值相同,则将当前节点的下一节点指向下下一节点            else: head = head.next  # 否则就更新变量        return ans   # 最后返回copy的头结点

❄️ 2️⃣. C# ❄️

/** * Definition for singly-linked list. * public class ListNode { *     public int val; *     public ListNode next; *     public ListNode(int val=0, ListNode next=null) { *         this.val = val; *         this.next = next; *     } * } */ /*   首先考虑特殊情况当只有0或者1个节点时,返回本身   将头结点copy给一个变量   遍历链表,如果当前值与下一个值相同,则将当前节点的下一节点指向下下一节点   否则就更新变量   最后返回copy的头结点 */public class Solution {    public ListNode DeleteDuplicates(ListNode head)     {        if (head==null||head.next==null) return head;                   // 首先考虑特殊情况当只有0或者1个节点时,返回本身        ListNode start = head;                                          // 将头结点copy给一个变量        while(head.next!=null)                                          // 遍历链表,如果当前值与下一个值相同,则将当前节点的下一节点指向下下一节点        {            if (head.val==head.next.val) head.next = head.next.next;    // 遍历链表,如果当前值与下一个值相同,则将当前节点的下一节点指向下下一节点            else head = head.next;                                      // 否则就更新变量        }        return start;                                                   // 最后返回copy的头结点    }}

? 结语 ?

坚持最重要,每日一题必不可少!?

期待你的关注和督促!?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119312.html

相关文章

  • leetcode83 Remove Duplicates from Sorted List从有序链表

    摘要:题目要求从有序链表中删除重复的数字,并且返回删除后的头结点例如输入链表为返回这题和相似,只是数据结构从数组变成了链表若还有更好的思路,请多多指教想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众 题目要求: 从有序链表中删除重复的数字,并且返回删除后的头结点例如输入链表为1->1->2,返回1->2 这题和leetcode26相似,只是数据结构从数组变成了链表 /*...

    JessYanCoding 评论0 收藏0
  • 第7期 Datawhale 组队学习计划

    马上就要开始啦这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低、中、高三档 可以按照需要参加 - 学习路线 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...

    dinfer 评论0 收藏0
  • 【前端来刷LeetCode】两数之和与两数相加

    摘要:给定表,存在函数,对任意给定的关键字值,代入函数后若能得到包含该关键字的记录在表中的地址,则称表为哈希表,函数为哈希函数。而中的对象就是基于哈希表结构,所以我们构造一个对象即可,是当前遍历到的值,是其与目标值的差。 大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式、调兼容就够掉头发的了,哪还有多余的头发再去折腾。 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,...

    BLUE 评论0 收藏0

发表评论

0条评论

henry14

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<