83. 删除排序链表中的重复元素

文章目录

题目

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

示例 1:

输入:head = 1,1,2

输出:1,2

示例 2:

输入:head = 1,1,2,3,3

输出:1,2,3

提示:

链表中节点数目在范围 [0, 300]
-100 <= Node.val <= 100

题目数据保证链表已经按升序 排列

解题思路

链表是排好序的,重复的元素在链表中出现的位置是连续的,我们只需要对链表进行一次遍历,就可以删除重复的元素。且第一个元素肯定是不需要移除的,所以无需 设置头结点。直接从head开始遍历即可

我们从指针 temp 指向链表的头节点,随后开始对链表进行遍历。如果当前 temptemp.next 对应的元素相同,那么我们就将 temp.next从链表中移除;否则说明链表中已经不存在其它与 temp 对应的元素相同的节点,因此可以将 temp 指向 temp.next

当遍历完整个链表之后,我们返回链表的头节点即可。

代码

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode temp = head;
        while (temp != null && temp.next != null) {
            if (temp.val == temp.next.val) {
                temp.next = temp.next.next;
            } else {
                temp = temp.next;
            }
        }
        return head;
    }
}
相关推荐
白白白小纯6 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
阿米亚波9 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
三克的油11 小时前
数据结构-4
数据结构
05664613 小时前
Python康复训练——数据结构
数据结构·windows·python
冻柠檬飞冰走茶14 小时前
PTA基础编程题目集 7-27 冒泡法排序(C语言实现)
c语言·开发语言·数据结构·算法
noipp17 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
冻柠檬飞冰走茶17 小时前
PTA基础编程题目集 7-20 打印九九口诀表(C语言实现)
c语言·开发语言·数据结构·算法
红叶舞18 小时前
基于线段树的数据结构
数据结构·python·算法
断点之下18 小时前
从“理扑克牌”到“分组优化”——直接插入排序与希尔排序详解
数据结构·算法·排序算法
起个破名想半天了18 小时前
算法与数据结构之DFS深度优先遍历
数据结构·算法·深度优先