1

LeetCode 面试题 02.01. 移除重复节点

大家好,我是灵魂画师--茄子。技术水平一般,喜欢画画。

开始今天的正题。

leetCode面试题 02.01. 移除重复节点

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

示例 1:

 输入:[1, 2, 3, 3, 2, 1]
 输出:[1, 2, 3]

示例 2:

 输入:[1, 2, 3, 3, 2, 1]
 输出:[1, 2, 3]

解法:

1.哈希表法

思路:

  1. 创建一个obj,循环遍历head
  2. 如果没有这个元素,则让obj中对应的属性值为1,如果有则记录当前节点
  3. 继续前进到达下一个没有的节点,改变指向。
var removeDuplicateNodes = function(head) {
    let hashObj = {};
    let p = head;
    let pre = null;
    while(p){
        if(hashObj[p.val]){
            pre = p.next
        } else {
            hashObj[p.val] = p.val;
            pre = p;
        }
        p = p.next;
    }
    return head;
};

结合我的分析你是不是对这道题有了更清晰的认识了呢?

以上就是我的思路以及解法了,希望大家喜欢我画的图解,我会继续努力的ヾ(◍°∇°◍)ノ゙。(点个赞把我带走吧~~)


灵魂画师_茄子
11 声望4 粉丝