前言
一个小伙伴说希望成立一个刷题小组,本就着富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育社会主义核心价值观,我答应他了。
因为也没有刷过题,比较菜。然后就看了下别人家的孩子怎么刷题的,这里附上链接。
朝花夕拾 - 2019 总结(附 283 道 LeetCode 题解)
题目描述:
将两个升序链表合并为一个新的 **升序** 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入: l1 = [1,2,4], l2 = [1,3,4]
输出: [1,1,2,3,4,4]
示例 2:
输入: l1 = [], l2 = []
输出: []
示例 3:
输入: l1 = [], l2 = [0]
输出: [0]
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* 哪里有什么思路,暴力解题呗
* 首先还是要给不了解链表的同学补点小知识点,本人也比较菜,有说得不对的地方还望指正。
* 从上面ListNode的定义我们能看出,实例对象有val(值),next(指针)。所以每个节点都有一个数据域和指针域,节点也叫结点。
* 为什么说是暴力解题呢?因为我们发现刨去节点的概念,我们看到的就是两个数组,根据题目,我们给他重新排序就好了。
* 我们还发现一个规律,有效节点遍历完之后,看定义,再去获取val是 0
* 首先我们定义一个哑结点,用来收集每个节点。
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function(list1, list2) {
var res = new ListNode();
var head = res;
while (list1 && list2) {
if (list1.val < list2.val) {
res.next = new ListNode(list1.val);
list1 = list1.next;
} else {
res.next = new ListNode(list2.val);
list2 = list2.next;
}
res = res.next;
}
if (list1) {
res.next = list1;
}
if (list2) {
res.next = list2;
}
return head.next;
};