Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.

Given 1->1->2->3->3, return 1->2->3.

以下是我用了不少的时间做出来的。感觉略啰嗦,但是思路清晰简单(把相同的重复的攥起来一起删掉)。
思路。
C++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* deleteDuplicates(ListNode* head){if(head == NULL || head -> next == NULL){return head;}       //如果链表为空或者只有一个元素,那么无需删除,直接返回原头结点的指针else{int count = 1;   //count用来记录相同元素的个数,如果最后统计相同的个数超过1,也就是2以上那么进行链表删除操作ListNode* p = head;  //将头结点赋给指针pwhile(p != NULL){int a = p -> val;  //a为当前的节点的值ListNode* pp = p -> next;  //pp依次往下走,知道下一个元素与a不相等的时候while(pp  != NULL){int b = pp -> val;if(a == b){count ++;pp = pp -> next;continue;}else   //如果a != b 则跳出小循环{break;}}if(count > 1) //在循环外,查看count的值,大于1则说明此时有相同的元素个数大于1,需要链表删除操作。{p -> next = pp;count = 1; //count重置}p = p -> next;  //大循环跳到下一个位置}return head;}}
};


精简的思路:
C++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head){ListNode* cur = head;while(cur && cur -> next ){if(cur -> val == cur -> next -> val)cur -> next = cur -> next -> next;elsecur = cur -> next;}return head;}
};

还是这个好一点!!good,学习。

LeetCode.83. Remove Duplicates from Sorted List(删除单链表中的重复元素)相关推荐

  1. [勇者闯LeetCode] 83. Remove Duplicates from Sorted List

    [勇者闯LeetCode] 83. Remove Duplicates from Sorted List Description Given a sorted linked list, delete ...

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

    83. 删除排序链表中的重复元素 Ideas 这题挺简单的,直接一次遍历,如果当前遍历的元素val跟下一个元素的val相等,说明是重复元素,直接把当前item的next指向item->next- ...

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

    83. 删除排序链表中的重复元素 golang Me func deleteDuplicates(head *ListNode) *ListNode {if head == nil || head.N ...

  4. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  5. 【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】

    Leetcode Leetcode -61.旋转链表 Leetcode -82.删除排序链表中的重复元素Ⅱ Leetcode -61.旋转链表 题目:给你一个链表的头节点 head ,旋转链表,将链表 ...

  6. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. 算法---删除排序链表中的重复元素 II

    删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 输入:head = [1,2,3,3,4,4,5] ...

  8. go数组去除重复_让我们一起啃算法----删除排序链表中的重复元素

    删除排序链表中的重复元素(Remove-Duplicates-From-Sorted-List) 题干: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1-> ...

  9. 删除单链表中的重复节点

    删除单链表中的重复节点 一.题目描述 已知单链表L,写一算法,删除其中的重复节点.(更好的阅读体验,请访问程序员在旅途) 二.分析解答 2.1 知识点分析 本题主要考察链表的相关知识点,其中包括:单链 ...

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

    82. 删除排序链表中的重复元素 II 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排 ...

最新文章

  1. RedHat Enterprise Linux 5下配置Apache+Mysql+Php
  2. 文本编辑器创建工具栏
  3. 【设计模式】工厂方法模式 Factory Method Pattern
  4. 分布式应用框架Akka快速入门
  5. 后端学习 - MySQL存储引擎、索引与事务
  6. nvidia显卡驱动,cuda,和cudnn版本
  7. 软件项目管理知识点总结
  8. matlab变压器 变比,变压器的变比主要取决于 。
  9. python官网下载-Python3.7.0 官方版官方版下载
  10. 如何将CHM转换为PDF文件?
  11. 【安装Oracle 12.2.0.1补丁】Oracle Database SAP Bundle Patch 12.2.0.1.220118 - 202202
  12. 7-2 群发邮件 (20 分)
  13. 【CozeTalk】关于“富人思维”
  14. 中国计算机软件法,计算机软件专利申请中国快律法务攻略.pdf
  15. Linux雷鸟邮件,thunderbird雷鸟mail
  16. shoprxr收银系统开源版
  17. 使用mono-repo实现跨项目组件共享
  18. JS采用WebSocket与后端服务器通信
  19. 信号完整性之板材损耗
  20. java http请求插件_Web测试调试插件RESTClient和HttpRequester

热门文章

  1. c语言文件操作——复制文件
  2. jsp 基本语法学习笔记
  3. 使用 jQuery 和 KnockoutJS 开发在线股票走势图应用
  4. Python编程语言中获取操作系统进程信息的方法
  5. [JLOI2008] CODES
  6. 动图展示16个Sublime Text快捷键用法 ---------------物化的sublime
  7. HDU 1269 裸奔的强联通分量
  8. spss clementine Twostep Cluster(两步聚类 二阶聚类)
  9. 28岁女博士生被骂“学术媛”,曾以数学建模专业第一名毕业,获牛津数学PhD offer...
  10. 【学术分享】发顶会论文,怎么就那么难?