题解 | #合并两群能量值#
合并两群能量值
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; }