zoukankan      html  css  js  c++  java
  • 力扣题目汇总(存在重复,合并两个有序数组,搜索插入位置)

    存在重复元素

    1.题目描述

      1. 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

        设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

        注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

        示例 1:

        输入: [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 成为一个有序数组。

        说明:

        • 初始化 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)
            
                
    

    ```有更加好的思路,或者解题方法评论区留言谢谢``

  • 相关阅读:
    飞入飞出效果
    【JSOI 2008】星球大战 Starwar
    POJ 1094 Sorting It All Out
    POJ 2728 Desert King
    【ZJOI 2008】树的统计 Count
    【SCOI 2009】生日快乐
    POJ 3580 SuperMemo
    POJ 1639 Picnic Planning
    POJ 2976 Dropping Tests
    SPOJ QTREE
  • 原文地址:https://www.cnblogs.com/pythonywy/p/10901484.html
Copyright © 2011-2022 走看看