「Leetcode系列」021,026

1,025 阅读1分钟

image.png

大家好我是林三心,男人嘛,一周总有那么一两次,今天就给大家分享Leetcode的021题,和026题

021.合并两个有序链表

题目

image.png

代码

var mergeTwoLists = function (l1, l2) {
    // 判断其中一条链表是否为空,空则返回另外一条
    if (l1 === null) return l2 
    if (l2 === null) return l1
    // 创建一条新链表用来合并两条链表
    let l3 = new ListNode(0)
    // 用于l3的前进,但又不改变l3
    let dommy = l3
    // 其中有一个为null则退出循环
    while(l1 && l2) {
        // 判断两个节点的val谁小,谁小指向谁,并且小值链表要前进一步
        if (l1.val <= l2.val) {
            dommy.next = l1
            l1 = l1.next
        } else {
            dommy.next = l2
            l2 = l2.next
        }
        dommy = dommy.next
    }
    // 经过上步循环,必有一条链表为null,以下是判断谁为null,并指向另外一条链表
    if (l1 === null) {
        dommy.next = l2
    }
    if (l2 === null) {
        dommy.next = l1
    }
    // 返回结果l3的next,因为l3的第一个节点是0,无意义
    return l3.next
};



026.删除排序数组中的重复项

题目

image.png

代码

var removeDuplicates = function(nums) {
    if (nums.length === 0) return 0 // 如果数组长度为0,无意义直接返回0
    // 首先以index为0为基准
    let i = 0
    // 开始遍历,从1开始
    for (let j = 1; j < nums.length; j++) {
        // 如果基准元素与遍历元素不等,则把基准元素右边元素替换成遍历元素,同时基准索引进1
        if (nums[i] !== nums[j]) {
            nums[++i] = nums[j]
        }
    }
    // i是索引,如果想返回个数,得加1
    return i + 1
};



今天,你加油了吗?