一. 问题描述

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 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;
}
}

最新文章

  1. window计划任务
  2. 使用 SyndicationFeed 输出 Rss
  3. thinkphp 3.2.3+Admin LTE后台框架
  4. Leetcode: Frog Jump
  5. debug,trace,release项目配置区别
  6. javascript中的继承用法
  7. windows cmd: 增强windows命令行
  8. CSS之float属性解读
  9. C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
  10. MongoDB--MapReduce分布统计s
  11. 排序算法Java实现(希尔排序)
  12. 性能测试学习 第九课--LR12中controller基础知识
  13. he
  14. css文件引人的三种方式
  15. Linux编程 12 (默认shell环境变量, PATH变量重要讲解)
  16. 解决tomcat中文传输乱码问题
  17. Java基础_0206:方法的定义与使用
  18. [转] SQL日期函数dayadd/datediff/datepart
  19. [CodeForces - 447B] B - DZY Loves Strings
  20. POJ3150 Candies【差分约束】

热门文章

  1. electron node.js 在 vscode 设置 调试 Debug
  2. win10系统不能ping通vmware虚假机解决办法
  3. fiddler手机抓包1
  4. Java搭建环境和工具安装详细教程
  5. Django 1.8.2 admin 数据库操作按下保存按钮出错
  6. (转)从0移植uboot (四) _点亮调试LED
  7. Centos7安装gitlab11 学习笔记之备份恢复及邮箱配置
  8. Effective Java 读书笔记(三):类与接口
  9. SQL 不同服务器数据库操作
  10. 从零开始搭建自己的.NET Core Api框架-1目录