合并两个有序单链表,并删除重复值
时间: 2024-11-06 20:17:39 浏览: 24
合并两个有序单链表并删除重复值的过程可以分为两步:
1. 合并两个已排序的链表[^1]:
```cpp
// 假设我们有链表1(l1)和链表2(l2)
ListNode* merge(ListNode* l1, ListNode* l2) {
if (!l1) return l2;
if (!l2) return l1;
// 如果链表1的元素小于链表2的元素,选择链表1作为下一个节点
if (l1->val < l2->val) {
l1->next = merge(l1->next, l2);
return l1;
} else {
// 否则,选择链表2作为下一个节点
l2->next = merge(l1, l2->next);
return l2;
}
}
```
2. 删除重复值:
在这个合并后的链表上遍历,如果当前节点的值等于下一个节点的值,就跳过下一个节点,直到找到不同的值为止。
```cpp
ListNode* removeDuplicates(ListNode* head) {
if (!head || !head->next) return head; // 处理头节点可能重复的情况
ListNode* current = head;
while (current->next) {
if (current->val == current->next->val) {
current->next = current->next->next;
} else {
current = current->next;
}
}
return head;
}
```
这样,我们就得到了一个合并并去重后的有序链表。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)