「Leetcode系列」021,026

image.png

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

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
};
复制代码



今天,你加油了吗?数组

相关文章
相关标签/搜索