删除给定链表中的重复元素(链表中元素从小到大有序排列),使链表中的所有元素都只出现一次 例如: 给定的链表为1->1->2,返回1->2 给定的链表为1->1->2->3->3,返回1->2->3 数据范围:链表长度满足 0≤n≤100,链表中任意节点的值满足 ∣val∣≤1000 要求:空间复杂度 O(1),时间复杂度 O(n) 输入描述 一行内输入一串整数,以空格间隔,以# 结束。 输出描述 一串去重后整数,以空格间隔,以# 结束。
时间: 2024-02-13 19:05:34 浏览: 81
好的,下面是 Python3 代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def deleteDuplicates(head: ListNode) -> ListNode:
if not head or not head.next:
return head
p1, p2 = head, head.next
while p2:
if p1.val == p2.val:
p2 = p2.next
else:
p1.next = p2
p1 = p2
p2 = p2.next
p1.next = None
return head
# 读入链表
nums = input().split()
head = ListNode(int(nums[0]))
p = head
for i in range(1, len(nums)-1):
p.next = ListNode(int(nums[i]))
p = p.next
# 删除重复元素
head = deleteDuplicates(head)
# 输出去重后的整数
res = ''
p = head
while p:
res += str(p.val) + ' '
p = p.next
res += '#'
print(res)
```
输入样例:
```
1 1 2 #
```
输出样例:
```
1 2 #
```
输入样例:
```
1 1 2 3 3 #
```
输出样例:
```
1 2 3 #
```
阅读全文