Leetcode:merge_sorted_array,leetcode
一、 題目
將給定的兩個排好序的數組合并成一個有序數組。
二、 分析
看到題目後感覺很簡單,就是比較兩個數組中的元素嘛,但是剛開始發現如果合并到A[]中從前到後的話可能會導致原資料該,怎樣才能避免這種錯誤呢?於是想到了逆向合并,從後往前填入數組。
class Solution {public: void merge(int A[], int m, int B[], int n) { int length=m+n-1; m--; n--; for(int i=length;i>=0;i--){ if (m == -1 || (n != -1 && A[m] <= B[n])) { A[i] = B[n--]; } else { A[i] = A[m--]; } } }};class Solution {public: void merge(int A[], int m, int B[], int n) { int length=m+n-1; int i=m-1; int j=n-1; while (i >= 0 && j >= 0) A[length--] = A[i] > B[j] ? A[i--] : B[j--] ; while (i >= 0) A[length--] = A[i--] ; while (j >= 0) A[length--] = B[j--] ; }};
leetcode 使用步驟 怎進去編程
步驟一:在瀏覽器輸入www.leetcode.com
步驟二:點擊右上方註冊
步驟三:註冊登入後,點擊右上方的Online judge
步驟四:可能又會讓你登入,點擊sing in而不是sign up,輸入使用者名稱密碼登入:
步驟五:選個題目,然後選擇語言,在代碼編輯器中輸入代碼,然後submit solution,系統就會給你判斷結果正確與否。所有提交的代碼系統都會給你儲存,在my submission中可以查看
leetcode是什
裡面有很編程多面試的題目,可以線上編譯運行。難度比較高。如果自己能都做出來,對面大公司很有協助。我就是做的那裡的題目。