leetcode學習記錄7 88 合併有序陣列

2021-10-01 22:12:09 字數 1309 閱讀 7055

難度:簡單

給定兩個有序整數陣列 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 ...