专栏首页python-爬虫力扣题目汇总(存在重复,合并两个有序数组,搜索插入位置)

力扣题目汇总(存在重复,合并两个有序数组,搜索插入位置)

存在重复元素

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)

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 力扣题目汇总(反转字符串中的单词,EXCEL表列序号,旋置矩阵)

    小小咸鱼YwY
  • 力扣题目汇总(缺失数字,第三大的数,至少是其他数字两倍的最大数)

    小小咸鱼YwY
  • 力扣题目汇总(最长特殊序列,回文数,移动零)

    小小咸鱼YwY
  • 手机通讯录删除了怎么恢复?教你快速恢复方法

      手机通讯录删除了怎么恢复?现在我们手机上都会有很多重要的数据,其中通讯录就是一项重要的数据之一,虽然现在很多人都未必会使用到通讯录,但是还是特别重要的数据,...

    科技第六人
  • Linux中find命令的使用详解(上)

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • Linux中find命令的使用详解(下)

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • mybatis源码解读(五)——sql语句的执行流程

    IT可乐
  • 走近科学:揭开伪基站的神秘面纱

    本文原创作者:敏争 ? “伪基站”目前已经成为广告、诈骗等垃圾短信的重要实施手段。在经过一轮打击销声匿迹一段时间之后,现在又有抬头之势,有的犯罪集团通过生产、销...

    FB客服
  • 虚拟化 - KVM 和 Xen 比较

    作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业化运作公司的基础技术,其中包括Citri...

    zero000
  • 如何设计高并发接口?

    Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBloc...

    Java团长

扫码关注云+社区

领取腾讯云代金券