考察知识点: 链表
题目分析:
可以新建一个head节点,方便处理l1
或l2
为nullptr
的情况。整体思路就是比较两个链表指针所指向的值,将值大的放到新链表的末尾,之后更新指针。
例如链表{4,5,3,5,4}{4,8,1,6,4}
新链表:
如果l1所指向的值大于等于l2所指向的值,那么就将l1插入到新链表,反之将l2
插入到新链表。一开始l1和l2所指向的值均为4,故将l1插入到新链表;然后l1的值为5,l2的值仍为4,将l1插入到新链表。
直到l1或l2指向了nullptr时,将非空的链表直接插入到新链表。
所用语言: C++
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
ListNode* mergeEnergyValues(ListNode* l1, ListNode* l2) {
// write code here
ListNode head(-1);
ListNode* p = &head;
while (l1 && l2) {
if (l1->val >= l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if (l1) p->next = l1;
if (l2) p->next = l2;
return head.next;
}
};