题解 | #合并两群能量值#

合并两群能量值

https://www.nowcoder.com/practice/d728938f66ac44b5923d4f2e185667ec

知识点:

链表/合并

分析:

如图,然后依次比较cur1和cur2的值,大的就放到head的next,依次比较即可。

注意:

谁的值大谁当链表的头/

  1. 链表不一样长可能,所以要处理这种情况。在每一次while的循环结束之后(两个链表合并结束后),判断一下cur1遍历完了没,或者cur2遍历完了没,谁完了,就让pre的next指向另一个。
  2. 最后返回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;
    }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务