代码编织梦想

学习时间: 

        2023年1月21日


题目描述:


 题解分享:

// 作     者 : 繁 华 倾 夏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

// 力扣(LeetCode):83. 删除排序链表中的重复元素

//Definition for singly-linked list.    定义单链表
struct ListNode {
    int val;
    struct ListNode *next;
};

// head:单链表的头结点
struct ListNode* deleteDuplicates(struct ListNode* head) {
    struct ListNode* n1 = head, * n2 = head;        // 新建两个指针每回进行链表上元素的比较
    if (!head) {
        return head;                                // 判断head是否为空,为空则直接返回
    }
    while (n1->next) {                              // 利用n1遍历链表,注意此时要进行的是n1->next的遍历,不能遍历n1
        n2 = n1->next;                              // 每次遍历n2都指向n1的下一个结点
        if (n1->val == n2->val) {                   // 如果n1和n2的值相等
            n1->next = n2->next;                    // 那么n1就指向n2的下一个结点,实现断链操作
        }
        else {
            n1 = n1->next;                          // 不相等时,移动n1到下一个结点位置
        }
    }
    return head;
}


// 从尾部插入数据
void SListPushBack(struct ListNode** pphead, int x) {
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
    newnode->val = x;
    newnode->next = NULL;
    if (*pphead == NULL) {
        *pphead = newnode;
    }
    else {
        // 找到尾节点
        struct ListNode* tail = *pphead;
        while (tail->next != NULL) {
            tail = tail->next;
        }
        tail->next = newnode;
    }
}

// 打印链表
void SListPrint(struct ListNode* phead)
{
    struct ListNode* cur = phead;
    while (cur != NULL) {
        printf("%d->", cur->val);
        cur = cur->next;
    }
    printf("NULL\n");
}


// 测试用例
// 输入 head = [1, 1, 2]
// 输出 [1, 2]
int main() {
    struct ListNode* head = NULL;                  // 建立空链表
    SListPushBack(&head, 1);                       // 为链表插入数据
    SListPushBack(&head, 1);
    SListPushBack(&head, 2);

    struct ListNode* re = deleteDuplicates(head);

    SListPrint(re);                                // 打印链表
    return 0;
}

【繁华倾夏】【每日力扣题解分享】【Day7】


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_71120708/article/details/128730900

leetcode 83. 删除排序链表中的重复元素(C++)-爱代码爱编程

题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 来源:83. 删除排序链表中的重复元素 - 力扣(LeetCode) 著作权归领扣网络所有。

力扣83. 删除排序链表中的重复元素(链表操作)-爱代码爱编程

力扣83. 删除排序链表中的重复元素(链表操作) https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1-

Leetcode 82. 删除排序链表中的重复元素 II C++-爱代码爱编程

Leetcode 82. 删除排序链表中的重复元素 II 题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 测试样例 1. 输入: 1->2->3->3->4->4->5 输出: 1->2->5 2. 输入: 1->1->1->2-

Leetcode 83. 删除排序链表中的重复元素 C++-爱代码爱编程

Leetcode 83. 删除排序链表中的重复元素 题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 测试样例 1. 输入: 1->1->2 输出: 1->2 2. 输入: 1->1->2->3->3 输出: 1->2->3 题解 用一个指针指向数字第一次出现的

[C++]Leetcode83.删除排序链表中的重复元素-爱代码爱编程

83.删除排序链表中的重复元素 题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 思路:先判断头结点和其下一个结点是否为空,为空则返回头结点While循环为当前结点和其下一个结点不为空,两者值相同则删,不同指针后移 class Solution {

Leetcode 83. 删除排序链表中的重复元素-爱代码爱编程

题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/prob

链表去重-爱代码爱编程

链表去重 82 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表 在这里插入图片描述 思路:因为是已经排好序的链表所以只需要比较前后就知道该节点的值是否是重复 /** * Definition for singly-link

LeetCode 83. 删除排序链表中的重复元素-爱代码爱编程

LeetCode 83. 删除排序链表中的重复元素 一、题目详情 原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ ​ 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 ​ 返回同样按升序排

LeetCode 83. 删除排序链表中的重复元素【c++/java详细题解】-爱代码爱编程

目录 1、题目2、思路3、c++代码4、java代码 1、题目 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输

LeetCode 83.删除排序链表中的重复元素(C++)-爱代码爱编程

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -1

83. 删除排序链表中的重复元素-爱代码爱编程

地址: 力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ 题目: 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1:   输入:head

【力扣-数据结构】【第 8 天】83. 删除排序链表中的重复元素-爱代码爱编程

标题83. 删除排序链表中的重复元素难度简单天数第8天,第2/2题数据结构链表 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head = [1,1,2]输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3]输出:[1,

力扣:83. 删除排序链表中的重复元素-爱代码爱编程

83. 删除排序链表中的重复元素 难度简单776 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 官方代码: class

[力扣] 83. 删除排序链表中的重复元素_cyclopssssss的博客-爱代码爱编程

leetcode做题记录 给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:he

力扣(leetcode)82. 删除排序链表中的重复元素 ii(c语言)_清墨韵染的博客-爱代码爱编程

一、环境说明 本文是 LeetCode 82题 : 删除排序链表中的重复元素 II,使用c语言实现。双指针+哑结点+链表删除。测试环境:Visual Studio 2019。 二、代码展示 //双指针, left ri

力扣 83. 删除排序链表中的重复元素-爱代码爱编程

题目来源:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/description/ C++题解:首先判断是否为空链表,然后判断cur->next的值与cur的值是否相同,相同则cur->next移至下一位,不相同则cur移至下一位。 /** * Defin