力扣題目彙總(存在重複,合併兩個有序數組,搜索插入位置)

存在重複元素

1.題目描述

    1. 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。python

      設計一個算法來計算你所能獲取的最大利潤。你能夠儘量地完成更多的交易(屢次買賣一支股票)。算法

      注意:你不能同時參與多筆交易(你必須在再次購買前出售掉以前的股票)。數組

      示例 1:app

      輸入: [7,1,5,3,6,4]
      輸出: 7
      解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 3 天(股票價格 = 5)的時候賣出, 這筆交易所能得到利潤 = 5-1 = 4 。
           隨後,在第 4 天(股票價格 = 3)的時候買入,在第 5 天(股票價格 = 6)的時候賣出, 這筆交易所能得到利潤 = 6-3 = 3 。

      示例 2:函數

      輸入: [1,2,3,4,5]
      輸出: 4
      解釋: 在第 1 天(股票價格 = 1)的時候買入,在第 5 天 (股票價格 = 5)的時候賣出, 這筆交易所能得到利潤 = 5-1 = 4 。
           注意你不能在第 1 天和第 2 天接連購買股票,以後再將它們賣出。
           由於這樣屬於同時參與了多筆交易,你必須在再次購買前出售掉以前的股票。

      示例 3:設計

      給定一個整數數組,判斷是否存在重複元素。
      
      若是任何值在數組中出現至少兩次,函數返回 true。若是數組中每一個元素都不相同,則返回 false。
      
      示例 1:
      
      輸入: [1,2,3,1]
      輸出: true
      示例 2:
      
      輸入: [1,2,3,4]
      輸出: false
      示例 3:
      
      輸入: [1,1,1,3,3,4,3,2,4,2]
      輸出: true

2.解題思路

利用元祖去重,比長度

3.解題

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        

        return len(nums) != len(set(nums))

合併兩個有序數組

1.題目描述

    • 給定兩個有序整數數組 nums1nums2,將 nums2 合併到 nums1使得 num1 成爲一個有序數組。code

      說明:排序

      • 初始化 nums1nums2 的元素數量分別爲 mn
      • 你能夠假設 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]
```

2.解題思路

最大的問題是在原數據上修改,其餘問題應不大

3.解題

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        start_nums1 = nums1[:m]
        nex_nums1 = nums2[:n]
        nums1.clear()
        for a in start_nums1:
            nums1.append(a)
        for b in nex_nums1 :
            nums1.append(b)
        nums1.sort()

搜索插入位置

1.題目描述

      1. 給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。若是目標值不存在於數組中,返回它將會被按順序插入的位置。

        你能夠假設數組中無重複元素。

        示例 1:

        輸入: [1,3,5,6], 5
        輸出: 2

        示例 2:

        輸入: [1,3,5,6], 2
        輸出: 1

        示例 3:

        輸入: [1,3,5,6], 7
        輸出: 4

        示例 4:

        輸入: [1,3,5,6], 0
        輸出: 0

2.解題思路

跟着題目講解走,咱們先要實現,
1.這個值再列表中,這個值插入後就是原先相同值的索引
2,這個值不在列表中
⑴列表中的值有比這個大的,這個值插入就是剛恰好比他大的值的索引
⑵列表中的值沒有有比這個大的,這個值插入就在末尾,末尾索引能夠爲len(列表)

3.解題

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        if target in nums:
            return nums.index(target)
        else:
            for a in range(len(nums)):
                if nums[a] > target:
                    return a
                    break  #後面不必進行運行了減小內存
            else:
                return len(nums)

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索