leetcode【合併兩個有序陣列】
題目:
分析:我們把上面的45種組合進行分類,分解成數量較少的幾個子問題:
1.以第乙個數字結尾的連續序列:[-2],最大值-2。
2.以第二個數字結尾的連續序列:[-2,1],[1],最大值1。
3.以第三個數字結尾的連續序列……
如果能得到這幾個序列的最大值,那麼比較這9個子組合的最大值就可以得到整體的最大值了。比較組合二和組合三,可以得到規律即:第n個組合只是在第(n-1)個組合的基礎上每乙個陣列增加第n個數字,然後再增加陣列[n]。將第n個組合分成兩種情況:
1.繼承n-1組合得到的;
2.新生成的,即[n];
從加和的角度來說,假設第n個數字是負數,那麼n無法給前面n-1個組合帶來正增長,那麼第n-1個組合就會拋棄第n個數字,自己就是最大的。
偽**:if max(n-1)>0,max(n)=max(n-1)+nums(n);
else max(n)=nums(n) ;
也就是說,我們只需要乙個變數來儲存前面子組合的最大值。另乙個變數儲存全域性最大值。
**如下:
合併兩個有序陣列
例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...
合併兩個有序陣列
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3 輸出 1,2,2,3,5,6 class solution def merge s...
合併兩個有序陣列
題目描述 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素...