1

分享

88. Merge Sorted Array(C++)

88. Merge Sorted Array、LeetCode、vector
筆記

Vector

標頭檔
  

#include <vector>

初始化
  

std::vector<int> v;

v = {1,2,3,4,5};

存取字符 []
  

v[0]

大小
  

v.size()

最後一個元素
  

v.back()

swap  (swaps the contents)
  

swap(v1,v2);    //兩個容器互相交換

增減元素

push_back (adds an element to the end)
  

v.push_back(x);    //在容器最後面新增x,x的type為容器宣告時的type

pop_back  (removes the last element)
  

v.pop_back();       //移除在容器最後面的元素

inserts  (inserts elements)
  

v.insert(位置, 元素);    //在指定位置增加元素

位置:v.begin()+i

erases  (erases elements)
  

v.erase(位置);              //在指定位置移除元素

位置:v.begin()+i


88. Merge Sorted Array

題目:給定兩個vector<int> "nums1" 和 "nums2",按非遞減順序排序,以及兩個整數 m 和 n,分別代表 nums1 和 nums2 中的元素數。 
回傳:Void不用回傳,將 nums1 和 nums2 依照非遞減順序排序合併結果存到nums1中。
例如1:
Input:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
  

Output : [1,2,2,3,5,6]

例如2:
Input:nums1 = [1], m = 1, nums2 = [], n = 0
  

Output : [1]

例如3:
Input:nums1 = [-1,0,2,3,0,0], m = 4, nums2 = [], n = 1
  

Output : [-1,0,1,2,3]

Code

三種情況
  • n!=0 && m!=0:判斷
  • n=0 && m!=0:nums1元素、nums2元素,直接回傳nums1
  • n!=0 && m=0:nums1元素、nums2元素,swap()交換後直接回傳nums1
  

#include <iostream>

#include <vector>

using namespace std;

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {

    while(nums1.size()!=m){

        nums1.pop_back();

    }

    if(n!=0 && m!=0){

        for(int i=0; i<nums2.size(); i++){

            for(int j=0; j<m+n-nums2.size(); j=j){

                if(nums2[i]>=nums1[j]){

                    nums2.insert(nums2.begin()+i,nums1[j]);

                    nums1.erase(nums1.begin());

                    i++;

                }

               else{

                    break;

                }

            }

        }


        while(nums1.size()!=0){

            nums2.push_back(nums1[0]);

            nums1.erase(nums1.begin());

        }


        swap(nums1,nums2);

    }


    if(m==0){

        swap(nums1,nums2);

    }

}


int main(){

    vector<int> nums1 = {-1,0,2,3,0,0};

    int m =4;

    vector<int> nums2 = {1};

    int n =1;

    merge(nums1,m,nums2,n);

    for(int i=0; i<nums1.size(); i++){

        cout<<nums1[i]<<" ";

    }

}

筆記 c語言 leetcode

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)

筆記 c語言 leetcode

int main()

Output

  

-1 0 1 2 3

參考資料

[1]. Merge Sorted Array - LeetCode
#筆記  #c語言  #leetcode 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • 本益比(PER)&每股盈餘(EPS)
  • 下一篇
  • 更多文章
    載入中... 沒有更多了