题
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
提示:
链表长度在[0, 20000]范围内。
链表元素在[0, 20000]范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
我看成了保留有排序结构的列表数据 。。。 就是一个去重 如果重复保留第一个。使用set就行
代码
/**
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
class Solution {
fun removeDuplicateNodes(head: ListNode?): ListNode? {
var temp=head
if (temp == null)
return temp
val set = HashSet<Int>()
set.add(temp.`val`)
while (temp?.next != null) {
val data = temp.next?.`val`
if (set.contains(data)) {
temp.next = temp.next?.next
}else{
if (data != null) {
set.add(data)
}
temp=temp.next
}
}
return head
}
}