第82题:删除排序链表中的重复元素II
2024-09-06 03:11:11
一. 问题描述
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
二. 解题思路
本题思路:本题采用双指针的方法进行一次遍历得到答案。
步骤一:设置一个头指针first,first.next=head,设置另一个指针second指向head。
步骤二:判断second指针指向的数字与下一个是否相等,如果不等则添加到first指针后面,重复步骤二,如果相等进入步骤三。
步骤三:将当前second指针指向的数设成标记数,second指针指向下一个数字,遍历链表(步骤四)。
步骤四:当标记数等于second指针指向的数字,则继续进行遍历,跳过当前所有重复数字。跳过重复标记数后返回步骤二。
三. 执行结果
四. 执行用时 :1 ms, 在所有 java 提交中击败了99.29%的用户
五. 内存消耗 :36.4 MB, 在所有 java 提交中击败了65.11%的用户
六. Java代码
class Solution {
public ListNode deleteDuplicates(ListNode head) { ListNode first=new ListNode(0);
first.next=head;
ListNode result=first;
ListNode second=head; if(head==null)
{
return head;
} while(second!=null) {
if(second.next==null)
{
first.next=second;
break;
}
if(second.val!=second.next.val)
{
first.next=second;
first=second;
second=second.next;
continue;
}
int data=second.val;
second=second.next;
while(second!=null&&data==second.val)
{
second=second.next;
if(second==null)
{
first.next=second;
break;
} } } return result.next;
}
}
最新文章
- window计划任务
- 使用 SyndicationFeed 输出 Rss
- thinkphp 3.2.3+Admin LTE后台框架
- Leetcode: Frog Jump
- debug,trace,release项目配置区别
- javascript中的继承用法
- windows cmd: 增强windows命令行
- CSS之float属性解读
- C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
- MongoDB--MapReduce分布统计s
- 排序算法Java实现(希尔排序)
- 性能测试学习 第九课--LR12中controller基础知识
- he
- css文件引人的三种方式
- Linux编程 12 (默认shell环境变量, PATH变量重要讲解)
- 解决tomcat中文传输乱码问题
- Java基础_0206:方法的定义与使用
- [转] SQL日期函数dayadd/datediff/datepart
- [CodeForces - 447B] B - DZY Loves Strings
- POJ3150 Candies【差分约束】
热门文章
- electron node.js 在 vscode 设置 调试 Debug
- win10系统不能ping通vmware虚假机解决办法
- fiddler手机抓包1
- Java搭建环境和工具安装详细教程
- Django 1.8.2 admin 数据库操作按下保存按钮出错
- (转)从0移植uboot (四) _点亮调试LED
- Centos7安装gitlab11 学习笔记之备份恢复及邮箱配置
- Effective Java 读书笔记(三):类与接口
- SQL 不同服务器数据库操作
- 从零开始搭建自己的.NET Core Api框架-1目录