文章目录
☀️ 前言 ☀️
算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!
🙀 作者简介 🙀
大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!
📢 :❤布小禅❤
📢 作者专栏:
这是我刷第 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
首先考虑特殊情况当只有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 = next class 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的头结点 } }
🌔 结语 🌔
坚持最重要,每日一题必不可少!😸
期待你的关注和督促!😛