1. 程式人生 > >[leetcode]python3 演算法攻略-合併兩個有序陣列

[leetcode]python3 演算法攻略-合併兩個有序陣列

給定兩個有序整數陣列 nums1 nums2,將 nums2 合併到 nums1 使得 num1 成為一個有序陣列。

說明:

  • 初始化 nums1nums2 的元素數量分別為 mn
  • 你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。

方案一:從最後一個元素開始做起

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        while m > 0 and n > 0:
            if nums1[m-1] > nums2[n-1]:
                nums1[m+n-1] = nums1[m-1]
                m -= 1
            else:
                nums1[m+n-1] = nums2[n-1]
                n -= 1
        if n > 0:
            nums1[:n] = nums2[:n]

方案二:利用列表排序。  不是這道題的考察點吧

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        for _ in range(m, len(nums1)):
            del nums1[m]
        for _ in range(n, len(nums2)):
            del nums2[n]
        nums1 += nums2
        nums1.sort()
        return

相關推薦

[leetcode]python3 演算法-合併有序陣列

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。說明:初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 n

LeetCode刷題Easy篇合併有序陣列

題目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: The

LeetCode 簡單題】17-合併有序陣列

宣告: 今天是第17道題。給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博

[leetcode]python3 演算法-陣列的交集 II

給定兩個陣列,寫一個方法來計算它們的交集。方案一:利用collections.Counter的&運算,一步到位,找到 最小次數 的相同元素。def intersect(nums1, nums2): """ :type nums1: List[int]

[leetcode]python3 演算法-數之和

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。方案一:利用字典,儲存檢查過的元素及其索引。def twoSum(nums, target): """ :type nums: List[

LeetCode演算法題88:合併有序陣列解析

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。 你可以假設 nums1 有足夠的空間(空間大小大於或等於

LeetCode--陣列演算法--合併有序陣列

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n

[leetcode]python3 演算法-二叉搜尋樹中第K小的元素

給定一個二叉搜尋樹,編寫一個函式 kthSmallest 來查詢其中第 k 個最小的元素。 說明: 你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。 方案一:中序排序後,返回第K-1個值 class Solution(object): def k

[leetcode]python3 演算法-驗證二叉搜尋樹

給定一個二叉樹,判斷其是否是一個有效的二叉搜尋樹。一個二叉搜尋樹具有如下特徵:節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。方案一:構建一個輔助函式,把當前節點的值,傳遞給子節點,在子節點中進行比較class

[leetcode]python3 演算法-爬樓梯

假設你正在爬樓梯。需要 n 步你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 方案一:每一步都是前兩步和前一步的和 class Solution(object): def climbSt

LeetCode::合併有序陣列——初級演算法

題目: 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。 你可以假設 nums1 有足夠的空間(空間大小大於或等於 

[leetcode]python3 演算法-反轉整數

給定一個 32 位有符號整數,將整數中的數字進行反轉。方案一:匿名函式s用於確定x的正負性。class Solution: def reverse(self, x): """ :type x: int :rtype: i

[leetcode]python3 演算法-打家劫舍

你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的

[leetcode]python3 演算法-只出現一次的數字

給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。方案一:去重求和,乘2減原def singleNumber(nums): """ :type nums: List[int] :rtype: int

[leetcode]python3 演算法-有效的字母異位詞

給定兩個字串 s 和 t ,編寫一個函式來判斷 t 是否是 s 的一個字母異位詞。方案一:s.count()比較各元素的個數class Solution: def isAnagram(self, s, t): """ :type s:

[LeetCode][初級演算法][排序] 合併有序陣列

乍一看像是歸併排序,但是從題目來看明顯是可以使用原地演算法的。使用額外陣列的方法很簡單:void merge(int* nums1, int m, int* nums2, int n) { int * temp = malloc(sizeof(int)*(m+n));

[leetcode]python3 演算法-有效的括號

給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。 有效字串需滿足: 左括號必須用相同型別的右括號閉合。 左括號必須以正確的順序閉合。 注意空字串可被認為是有效字串。 class Solution(object):

[leetcode]python3 演算法-旋轉影象

給定一個 n × n 的二維矩陣表示一個影象。將影象順時針旋轉 90 度。方案一:先按X軸對稱旋轉, 再用zip()解壓,最後用list重組。class Solution: def rotate(self, matrix): """ :

[leetcode]python3 演算法-加一

給定一個非負整數組成的非空陣列,在該數的基礎上加一,返回一個新的陣列。最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。方案一:利用數學公式求原陣列的int形式def plusOne(digits): ""

LeetCode合併有序陣列

問題描述: 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和&n