leetcode88:合并两个有序数组(javaScript)

题目:

       给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

       请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

       注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。

       为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

方法一:双指针法

        将两个数组看作队列,每次从两个数组头部取出比较小的数字放到结果中。

var merge = function (nums1, m, nums2, n) {
    let sort = [];
    let p1 = 0;//nums1指针
    let p2 = 0;//nums2指针
    let cur;
    while(p1<m||p2<n){
        if(p1===m){//nums1已经走完,cur为nums2[p2]
            cur = nums2[p2++]
        }else if(p2===n){//nums2已经走完,cur为nums1[p1]
            cur = nums1[p1++]
        }else if(nums1[p1]<nums2[p2]){//nums1指针指向的元素小于nums2指针指向的元素
            cur = nums1[p1++]
        }else{//nums1指针指向的元素大于nums2指针指向的元素
            cur = nums2[p2++]
        }
        sort[p1+p2-1] = cur
     }

    for(let i = 0;i<m+n;i++){
        nums1[i] = sort[i]//将结果存入nums1中
    }
     return nums1;
}

方法二:先合并后排序;

 var merge = function (nums1, m, nums2, n) {
      //将nums2插入到nums1尾部
      nums1.splice(m, nums1.length - m, ...nums2)
      //排序后返回
      return nums1.sort((a, b) => a - b)
 };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第 296 章 使用 JavascriptLeetCode 解决方案 var :smiling_face_with_sunglasses: = Easy , :neutral_face: = Medium , :fearful_face: = Hard 1 :neutral_face: 二和 2 :neutral_face: 两个数字相加 3 :neutral_face: 无重复字符的最长子串 4 :fearful_face: 两个有序数组的中位数 5 :neutral_face: 最长回文子串 6 :smiling_face_with_sunglasses: 之字形转换 7 :smiling_face_with_sunglasses: 反转整数 8 :smiling_face_with_sunglasses: 字符串到整数 (atoi) 9 :smiling_face_with_sunglasses: 回文数 10 :fearful_face: 正则表达式匹配 11 :neutral_face: 盛水最多的容器 12 :neutral_face: 整数转罗马 13 :smiling_face_with_sunglasses: 罗马到整数 14 :smiling_face_with_sunglasses: 最长公共前缀 15 :neutral_face: 3总和 16 :neutral_face: 3和最近 17 :neutral_face: 电话号码的字母组合 18 :neutral_face: 4总和 19 :smiling_face_with_sunglasses: 从列表末尾删除第 N 个节点 20 :smiling_face_with_sunglasses: 有效括号 21 :smiling_face_with_sunglasses: 合并两个排序列表 22 :neutral_face: 生成括号 23 :fearful_face: 合并 k 个排序列表 24 :neutral_face: 成对交换节点 25 :fearful_face: k-Group 中的反向节点 26 :smiling_face_with_sunglasses: 从排序数组中删除重复项 27 :smiling_face_with_sunglasses: 删除元素 28 :smiling_face_with_sunglasses: 实现 strStr() 29 :neutral_face: 两个整数相除 30 :fearful_face: 连接所有单词的子串 31 :neutral_face: 下一个排列 32 :fearful_face: 最长有效括号 33 :fearful_face: 在旋转排序数组中搜索 34 :neutral_face: 搜

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值