题解 | #合并两群能量值#
合并两群能量值
https://www.nowcoder.com/practice/d728938f66ac44b5923d4f2e185667ec
知识点:
链表/合并
分析:
如图,然后依次比较cur1和cur2的值,大的就放到head的next,依次比较即可。
注意:
谁的值大谁当链表的头/
- 链表不一样长可能,所以要处理这种情况。在每一次while的循环结束之后(两个链表合并结束后),判断一下cur1遍历完了没,或者cur2遍历完了没,谁完了,就让pre的next指向另一个。
- 最后返回head即可。
编程语言:
C++
完整代码:
ListNode* mergeEnergyValues(ListNode* l1, ListNode* l2) {
if(l1 == nullptr || l2 == nullptr) return l1 == nullptr ? l2 : l1;
ListNode* head = l1->val <l2->val? l2 : l1; //谁的头大,谁当新的头
ListNode* pre = head; //辅助指针,方便找到当前处理指针的前一个指针
ListNode* cur1 = head->next; //当前处理指针,指向新头的下一个,以便操作
ListNode* cur2 = head == l1 ? l2 : l1; //cur2的话 去另一个链表
while(cur1 && cur2){
if(cur1->val > cur2->val){
pre->next = cur1;
cur1 = cur1->next;
}else{
pre->next = cur2;
cur2 = cur2->next;
}
pre = pre->next;
}
pre->next = cur1 == nullptr ? cur2 : cur1;
return head;
}
查看11道真题和解析

