博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表去重(删除重复元素)
阅读量:4129 次
发布时间:2019-05-25

本文共 880 字,大约阅读时间需要 2 分钟。

未排序链表去重 O(n^2)

思路:

第一重循环从链表的头节点开始,枚举一个保留的节点,这是因为我们保留的是「最开始出现的节点」。

第二重循环是枚举「最开始出现的节点」的下一个结点,到链表的末尾结束,将所有与保留节点相同的节点全部移除。

//移除未排序链表中的重复节点。保留最开始出现的节点。(两层循环)//输入:[1, 2, 3, 3, 2, 1]//输出:[1, 2, 3]var removeDuplicateNodes = function (head) {    var slow = head;    while (slow) {        var fast = slow;        while (fast.next) {            if (slow.val === fast.next.val) {                fast.next = fast.next.next;            } else {                fast = fast.next;            }        }        slow = slow.next;    }	return head;};

排序链表去重 O(n)

//排序链表去重 O(n)var deleteDuplicates = function(head) {    let current = head //把首节点指针赋值给current    while(current && current.next) { //当前节点以及下一节点不为空时        if(current.val === current.next.val) { //值相等            current.next = current.next.next        }else {            current = current.next //值不相等        }    }    return head //返回首节点};

 

转载地址:http://dnuvi.baihongyu.com/

你可能感兴趣的文章
[mp4]The audio codec for mp4 atom
查看>>
[mp4]mp4文件中的esds box解析
查看>>
字符设备
查看>>
设备控制接口(ioctl 函数)
查看>>
<转自CSDN foxavideo>我自己的FFMpeg编译之路
查看>>
sigsuspend()函数作用详解
查看>>
信号量 互斥锁 条件变量的区别
查看>>
makefile自动化变量及其说明
查看>>
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
查看>>
Posix多线程编程—线程属性
查看>>
linux fork函数浅析
查看>>
javaWeb基础01-html
查看>>
javaWeb基础02-CSS
查看>>
javaWeb基础03-JavaScript
查看>>
javaWeb基础04-JQuery
查看>>
javaWeb基础05-mysql
查看>>
javaWeb基础07-jdbc
查看>>
Android Studio:Android Studio 打包流程
查看>>
开发工具:Eclipse关联Android系统源码的2种方法
查看>>
Android UI:PopupWindow基本学习
查看>>