【LeetCode】Remove Duplicates from Sorted List

来源:互联网 发布:js input 当前日期 编辑:程序博客网 时间:2024/06/15 08:25

问题地址:http://oj.leetcode.com/problems/remove-duplicates-from-sorted-list/

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.

思路:题目非常简单,这里做一个记录只是对链表有的新的理解和认识。之前对与链表其实没有完全理解,但是通过这道题目可以说是完全理解了,对于链表新的理解:

(1)链表的每一个单元是独立的,只不过是里面的next指针把他们连接起来而已。

(2)如下函数deleteDuplicates返回的是类型是ListNode,所有要想改变之后的链表形式,必须修改里面的next指针的指向单元,最终返回的也是这个链表的头节点(其实类似于C++中的头指针,只不过在java中没有指针的概念),我们让pre=head;那么就认为这两个对象指向同一片内存空间。


AC代码:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode deleteDuplicates(ListNode head) {       Set<Integer> nodeSet = new HashSet<Integer>();ListNode pre = null;ListNode newHead = head;while (head != null) {if (!nodeSet.contains(head.val)) {nodeSet.add(head.val);pre=head;}else{pre.next=head.next;}head = head.next;}return newHead;            }}

0 0