小黑二次遍历
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
# 计算频次
map_ = {}
link = head
while link:
val = link.val
map_[val] = map_.get(val,0) + 1
link = link.next
# 重新构造链表
temp = ListNode()
node = temp
while head:
val = head.val
if map_[val] == 1:
node.next = head
node = node.next
head = head.next
node.next = None
return temp.next
二次遍历(python)
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
# 辅助结点
dummy = ListNode(next = head)
link = dummy
while link.next and link.next.next:
temp = link.next
# 相等的话,删除val元素,link不动
if temp.val == temp.next.val:
val = temp.val
temp = temp.next.next
# 跳过所有val的结点
while temp and temp.val == val:
temp = temp.next
link.next = temp
# 不相等的话link后移
else:
link = temp
return dummy.next
二次遍历(java)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
// 辅助结点
ListNode dummy = new ListNode(-10000,head);
ListNode link = dummy;
// 开始遍历
while(link.next != null && link.next.next != null){
ListNode temp = link.next;
if(temp.val == temp.next.val){
int val = temp.val;
temp = temp.next.next;
while(temp != null && temp.val == val){
temp = temp.next;
}
link.next = temp;
}else{
link = temp;
}
}
return dummy.next;
}
}
小黑生活
图书馆咖啡厅开啦
昨天跟师弟们出去吃饭啦