美文网首页
dart 实现88_合并两个有序数组

dart 实现88_合并两个有序数组

作者: 锦鲤跃龙 | 来源:发表于2020-11-07 12:17 被阅读0次

    [toc]

    题目:https://leetcode-cn.com/problems/merge-sorted-array/
    要求
    合并两个给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。

    思路

    • 双索引
    • 复制一个数组出来
    • 遍历两个数组赋值

    代码

    
    class LeetCode88 {
      static List<int> num1Copy = [];
      static merge(List<int> nums1, int m, List<int> nums2, int n) {
        int num1Index = 0;
        int num2Index = 0;
        num1Copy.clear();
        //备份num1数组
        for (var i = 0; i < m; i++) {
          num1Copy.add(nums1[i]);
        }
        int num1CopyIndex = 0; //记录备份数组索引
        //两个数组都得比较完
        while (num2Index < n || num1CopyIndex < m) {
          if (num1CopyIndex < m && num2Index < n) {
            //正常情况
            if (num1Copy[num1CopyIndex] < nums2[num2Index]) {
              nums1[num1Index] = num1Copy[num1CopyIndex];
              num1CopyIndex += 1;
            } else {
              nums1[num1Index] = nums2[num2Index];
              num2Index += 1;
            }
          } else {
            if (num1CopyIndex < m) {//num1还没比较完
              nums1[num1Index] = num1Copy[num1CopyIndex];
              num1CopyIndex += 1;
            } else {//num2还没比较完阿
              nums1[num1Index] = nums2[num2Index];
              num2Index += 1;
            }
          }
          num1Index += 1;
        }
        print(nums1);
      }
    }
    
    main(List<String> args) {
      LeetCode88.merge([2, 0], 1, [1], 1);
    }
    
    

    执行结果结果

    [1, 2]
    
    

    相关文章

      网友评论

          本文标题:dart 实现88_合并两个有序数组

          本文链接:https://www.haomeiwen.com/subject/nxbfbktx.html