難度:簡單
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。
說明:初始化 nums1 和 nums2 的元素數量分別為 m 和 n。
你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。
示例:輸入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
輸出: [1,2,2,3,5,6]
1.從頭開始有兩個陣列兩個指標p、q,指向要比較的元素,還有乙個陣列作為目標數值向內插入數值,有一指標i
2.先將陣列合併在進行排序,**量少,但時間複雜度較高 (沒想到的做法)
3.指標從尾開始,用兩陣列用p,q指向最後乙個元素,找最大的插入,從nums1的尾部開始插入,本題最適合的方法,不需要再宣告乙個陣列,時間複雜度o(m+n),空間複雜度o(1) (沒想到的做法)
//方法一 我自己的實現方法,**不咋優美
class
solution
else
}//arraycopy(arr1,p,arr2,q,num);arr1為要複製的陣列,p為複製的初始位置,arr2為要複製到的目標陣列,q為初始位置,num為複製的個數
if(p < m)
system.
arraycopy
(nums1, p, temp, i, m - p);if
(q < n)
system.
arraycopy
(nums2, q, temp, i, n - q)
; system.
arraycopy
(temp,
0, nums1,
0, m+n);}
}//方法一 題解的**,**比上面的簡潔,思路一樣,空間複雜度稍微低一些
class
solution
}//方法二 合併陣列再排序
class
solution
}//方法三
class
solution
}
1.有從尾開始的意識,前面一些題也有一些從尾開始或首位一起開始的做法,可能會更加簡單;
2.條件 ? 表示式1 : 表示式2,這個式子可使**更加簡潔
3.arraycopy(arr1,p,arr2,q,num);arr1為要複製的陣列,p為複製的初始位置,arr2為要複製到的目標陣列,q為初始位置,num為複製的個數
LeetCode 788 旋轉數字
我們稱乙個數 x 為好數,如果它的每位數字逐個地被旋轉 180 度後,我們仍可以得到乙個有效的,且和 x 不同的數。要求每位數字都要被旋轉。如果乙個數的每位數字被旋轉以後仍然還是乙個數字,則這個數是有效的。0,1,和 8 被旋轉後仍然是它們自己 2 和 5 可以互相旋轉成對方 6 和 9 同理,除了...
LeetCode 788 旋轉數字
題目描述 我們稱乙個數 x 為好數,如果它的每位數字逐個地被旋轉 180 度後,我們仍可以得到乙個有效的,且和 x 不同的數。要求每位數字都要被旋轉。如果乙個數的每位數字被旋轉以後仍然還是乙個數字,則這個數是有效的。0,1,和 8 被旋轉後仍然是它們自己 2 和 5 可以互相旋轉成對方 6 和 9 ...
Leetcode788 旋轉數字(Python)
題目描述 我們稱乙個數 x 為好數,如果它的每位數字逐個地被旋轉 180 度後,我們仍可以得到乙個有效的,且和 x 不同的數。要求每位數字都要被旋轉。如果乙個數的每位數字被旋轉以後仍然還是乙個數字,則這個數是有效的。0,1,和 8 被旋轉後仍然是它們自己 2 和 5 可以互相旋轉成對方 6 和 9 ...