dart 實現(xiàn)88_合并兩個有序數(shù)組

[toc]

題目:https://leetcode-cn.com/problems/merge-sorted-array/
要求
合并兩個給你兩個有序整數(shù)數(shù)組 nums1 和 nums2,請你將 nums2 合并到 nums1 中,使 nums1 成為一個有序數(shù)組。

思路

  • 雙索引
  • 復制一個數(shù)組出來
  • 遍歷兩個數(shù)組賦值

代碼


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數(shù)組
    for (var i = 0; i < m; i++) {
      num1Copy.add(nums1[i]);
    }
    int num1CopyIndex = 0; //記錄備份數(shù)組索引
    //兩個數(shù)組都得比較完
    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);
}

執(zhí)行結(jié)果結(jié)果

[1, 2]

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容