Python每日一练(20230506) 存在重复元素I、II、III

news2024/11/23 3:24:25

目录

1. 存在重复元素 Contains Duplicate I

2. 存在重复元素 Contains Duplicate II

3. 存在重复元素 Contains Duplicate III

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 存在重复元素 Contains Duplicate I

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

输入:nums = [1,2,3,4]
输出:false

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

提示:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

代码: 多种方法实现

from typing import List
class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, n):
                if nums[i] == nums[j]:
                    return True
        return False

    def containsDuplicate2(self, nums: List[int]) -> bool:
        num_set = set()
        for num in nums:
            if num in num_set:
                return True
            num_set.add(num)
        return False

    def containsDuplicate3(self, nums: List[int]) -> bool:
        nums.sort()
        for i in range(1, len(nums)):
            if nums[i] == nums[i - 1]:
                return True
        return False

    def containsDuplicate4(self, nums: List[int]) -> bool:
        return len(nums) != len(set(nums))


if __name__ == '__main__':
    s = Solution()
    nums = [1,2,3,1]
    print(s.containsDuplicate(nums))
    print(s.containsDuplicate2(nums))
    print(s.containsDuplicate3(nums))
    print(s.containsDuplicate4(nums))
    nums = [1,2,3,4]
    print(s.containsDuplicate(nums))
    print(s.containsDuplicate2(nums))
    print(s.containsDuplicate3(nums))
    print(s.containsDuplicate4(nums))
    nums = [1,1,1,3,3,4,3,2,4,2]
    print(s.containsDuplicate(nums))
    print(s.containsDuplicate2(nums))
    print(s.containsDuplicate3(nums))
    print(s.containsDuplicate4(nums))

输出:

True
True
True
True
False
False
False
False
True
True
True
True


2. 存在重复元素 Contains Duplicate II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [1,2,3,1], k = 3
输出:true

示例 2:

输入:nums = [1,0,1,1], k = 1
输出:true

示例 3:

输入:nums = [1,2,3,1,2,3], k = 2
输出:false

提示:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • 0 <= k <= 10^5

代码: 多种方法实现

from typing import List
class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, min(i + k + 1, n)):
                if nums[i] == nums[j]:
                    return True
        return False

    def containsNearbyDuplicate2(self, nums: List[int], k: int) -> bool:
        num_index = {}
        for i in range(len(nums)):
            if nums[i] in num_index and i - num_index[nums[i]] <= k:
                return True
            num_index[nums[i]] = i
        return False

    def containsNearbyDuplicate3(self, nums: List[int], k: int) -> bool:
        n = len(nums)
        if k >= n:
            k = n - 1
        num_set = set(nums[:k + 1])
        if len(num_set) != k + 1:
            return True
        for i in range(k + 1, n):
            num_set.remove(nums[i - k - 1])
            if nums[i] in num_set:
                return True
            num_set.add(nums[i])
        return False


if __name__ == '__main__':
    s = Solution()
    nums = [1,2,3,1]
    print(s.containsNearbyDuplicate(nums, 3))
    print(s.containsNearbyDuplicate2(nums, 3))
    print(s.containsNearbyDuplicate3(nums, 3))
    nums = [1,0,1,1]
    print(s.containsNearbyDuplicate(nums, 1))
    print(s.containsNearbyDuplicate2(nums, 1))
    print(s.containsNearbyDuplicate3(nums, 1))
    nums = [1,2,3,1,2,3]
    print(s.containsNearbyDuplicate(nums, 2))
    print(s.containsNearbyDuplicate2(nums, 2))
    print(s.containsNearbyDuplicate3(nums, 2))

输出:

True
True
True
True
True
True
False
False
False


3. 存在重复元素 Contains Duplicate III

给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 

如果存在则返回 true,不存在返回 false

示例 1:

输入:nums = [1,2,3,1], k = 3, t = 0
输出:true

示例 2:

输入:nums = [1,0,1,1], k = 1, t = 2
输出:true

示例 3:

输入:nums = [1,5,9,1,5,9], k = 2, t = 3
输出:false

提示:

  • 0 <= nums.length <= 2 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • 0 <= k <= 10^4
  • 0 <= t <= 2^31 - 1

代码: 多种方法实现

from typing import List
import bisect
class Solution:
    def containsNearbyAlmostDuplicate(self, nums: List[int], k: int, t: int) -> bool:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, min(i + k + 1, n)):
                if abs(nums[i] - nums[j]) <= t and abs(i - j) <= k:
                    return True
        return False

    def containsNearbyAlmostDuplicate2(self, nums: List[int], k: int, t: int) -> bool:
        n = len(nums)
        if t < 0 or k <= 0:
            return False
        bst = []
        for i in range(n):
            idx = bisect.bisect_left(bst, nums[i] - t)
            if idx < len(bst) and abs(bst[idx] - nums[i]) <= t:
                return True
            bisect.insort(bst, nums[i])
            if i >= k:
                bst.remove(nums[i - k])
        return False

    def containsNearbyAlmostDuplicate3(self, nums: List[int], k: int, t: int) -> bool:
        if t < 0 or k <= 0:
            return False
        n = len(nums)
        dic = dict()
        w = t + 1
        for i in range(n):
            m = nums[i] // w
            if m in dic:
                return True
            elif m - 1 in dic and abs(nums[i] - dic[m - 1]) < w:
                return True
            elif m + 1 in dic and abs(nums[i] - dic[m + 1]) < w:
                return True
            dic[m] = nums[i]
            if i >= k:
                del dic[nums[i - k] // w]
        return False


if __name__ == '__main__':
    s = Solution()
    nums = [1,2,3,1]
    print(s.containsNearbyAlmostDuplicate(nums, 3, 0))
    print(s.containsNearbyAlmostDuplicate2(nums, 3, 0))
    print(s.containsNearbyAlmostDuplicate3(nums, 3, 0))
    nums = [1,0,1,1]
    print(s.containsNearbyAlmostDuplicate(nums, 1, 2))
    print(s.containsNearbyAlmostDuplicate2(nums, 1, 2))
    print(s.containsNearbyAlmostDuplicate3(nums, 1, 2))
    nums = [1,5,9,1,5,9]
    print(s.containsNearbyAlmostDuplicate(nums, 2, 3))
    print(s.containsNearbyAlmostDuplicate2(nums, 2, 3))
    print(s.containsNearbyAlmostDuplicate3(nums, 2, 3))

输出:

True
True
True
True
True
True
False
False
False


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理-数据管理能力DCMM模型

DCMM 数据管理能力成熟度评估模型简介 DCMM&#xff08;Data Management Capability Maturity Assessment Model&#xff0c;数据管理能力成熟度评估模型&#xff09;是我国首个数据管理领域国家标准&#xff0c;将组织内部数据能力划分为八个重要组成部分&#xff0c;描述了每…

重新定义座舱智能化的下半场?谁能抓住弯道超车的窗口期

2020年&#xff0c;高通8155上车之前&#xff0c;行业的定义更多是4G联网互联网生态&#xff08;智能手机的复刻&#xff09;&#xff0c;以斑马智行为代表&#xff1b;而随着集成异构计算、高性能AI引擎&#xff08;8TOPS算力&#xff09;的高通8155密集上车&#xff0c;驱动行…

车载多屏互动联动动画版本同屏幕大小情况方案设计--众筹项目

hi&#xff0c;粉丝朋友们&#xff1a; 背景及成果展示 本节带大家来开始学习多屏幕互动的动画版本设计&#xff0c;回忆一下我们已经在之前blog和wms课程中学习了多屏互动的非动画版本如下&#xff1a; 再来看看今天我们想要实现有动画版本的成果&#xff1a; 是不是相比之…

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …

全景环视搭载率突破30%,本土供应商在细分市场突围而出

随着行泊一体、AVP等功能成为智能驾驶赛道新周期的主角&#xff0c;背后支撑落地的全景环视&#xff08;也称为360环视&#xff09;方案也不再是传统功能定义场景&#xff08;为驾驶员提供泊车及盲区辅助&#xff09;下的应用&#xff0c;同时&#xff0c;环视与周视的硬件复用…

【Mybatis-Plus笔记01】整合Springboot实现基础配置和增删改查案例

【Mybatis-Plus笔记01】整合Springboot实现基础配置和增删改查案例 【一】Mybatis-Plus的简单介绍【1】MP的特特性有哪些【2】MP的框架结构 【二】MP的使用案例&#xff08;1&#xff09;准备开发环境&#xff08;2&#xff09;添加pom依赖&#xff08;3&#xff09;编写yml配置…

基于SpringBoot+Vue实现的体检录入系统

【简介】 本体检信息录入系统采用前端&#xff1a;vue&#xff1b;后端&#xff1a;springbootmybatis-plusredismysql技术架构开发&#xff0c;前后端分离&#xff0c;容易上手。除了基本的体检结果查询、录入及导出外&#xff0c;在录入中还能对录入信息进行智能计算。 【功…

LeetCode:20. 有效的括号

20. 有效的括号 1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果 1&#xff09;题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1…

Multi-Head self-Attention结构细节

先验知识&#xff1a; Self-Attention结构细节及计算过程https://blog.csdn.net/weixin_54039182/article/details/130515594?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22130515594%22%2C%22source%22%3A%22weixin_54039182…

分布式夺命12连问

分布式理论 1. 说说CAP原则&#xff1f; CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;这3个基本…

Zotero 抓取知网文献失败解决办法梳理(针对问题:更新Translator无效,更新茉莉花插件无效,卸载Zotero无效,使用学校VPN访问知网)

Zotero 抓取知网文献失败解决办法梳理&#xff08;针对问题&#xff1a;更新Translator无效&#xff0c;更新茉莉花插件无效&#xff0c;卸载Zotero无效&#xff0c;使用学校VPN访问知网&#xff09; 问题背景解决方案一解决方案二解决方案三 说在前面&#xff1a;解决方案一和…

idea 远程debug阿里云服务器springboot项目

文章目录 前言意见和建议技术要点小试牛刀通信端口放行Idea增加remote启动项服务端JAR增加参数并启动本地项目启动远程debugpostman测试debug 前言 在实际的生产中不免会出现系统问题&#xff0c;有的在测试环境发现&#xff0c;有的在预发布环境发现&#xff0c;更有甚者在生…

播放卡顿分析

看下这个M3U8请求&#xff0c;时间间隔超过duration的时长。ts的duration是11S M3U8内容更新慢&#xff1f;

JavaScript:二叉树(前序遍历,中序遍历,后序遍历,递归法,统一迭代法)

文章目录 二叉树递归法迭代法 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09;二叉树的递归遍历递归法作图分析代码和思路分析 二叉树的迭代遍历前序遍历迭代分析代码及思路分析 94. 二叉树的中序遍历递归法作图举例递归流程 迭代法代码 145. 二叉树的后序遍历 …

虹科分享|便携式数据包捕获解决方案的发展

有人说&#xff0c;未来就在眼前。如果我们看看过去十年中开发出的物联网技术&#xff0c;我们的确没发反驳他们。21世纪的技术繁荣改变了我们的生活&#xff0c;和彼此之间的交流方式。 比如说我们正在研究的MAREA项目&#xff0c;我们甚至可以说我们正在见证历史。 这是一个…

晚唐诗人杜荀鹤及其十首古诗赏析

一、关于出身的传说 他出身寒微。曾数次赴长安应考&#xff0c;不第还山。相传他是杜牧出妾之子。他诗语言通俗、风格清新&#xff0c;后人称“杜荀鹤体”。他就是晚唐诗人杜荀鹤。 据说&#xff0c;杜牧在会昌末年任池州刺史时&#xff0c;妾程氏有孕&#xff0c;为杜妻所逐&…

翻译|英译汉|汉译英|11:30-11:50+8:40-10:00

英译汉&#xff1a;逐句翻译、注意用词、确保大体通顺。 目录 一、解题技巧 &#xff08;一&#xff09;词语翻译 1. 词的选用 2. 词性转换 &#xff08;1&#xff09;英译汉中的词性转换 &#xff08;2&#xff09;汉译英中的词性转换 3. 增词法 4. 减词法 &#xff…

白嫖党的福音,这5款实用的黑科技软件,干货满满,真是相见恨晚

赶紧上车&#xff01;一般人都不知道的5款超实用软件&#xff0c;个个都是黑科技工具&#xff01;用了简直效率翻倍&#xff0c;不允许你不知道&#xff01;&#xff01;&#xff01;先收藏&#xff0c;以备不时之需。 1.quicklook 作为windows最强的文件预览器&#xff0c;q…

IGBT基础知识

1. 什么是IGBT&#xff1f; IGBT&#xff0c;绝缘栅双极型晶体管&#xff0c;是由&#xff08;BJT&#xff09;双极型三极管和绝缘栅型场效应管&#xff08;MOS&#xff09;组成的复合全控型电压驱动式功率半导体器件, 兼有&#xff08;MOSFET&#xff09;金氧半场效晶体管的高…

【虚拟机数据恢复】Vmware ESXI虚拟机数据恢复案例

虚拟机数据恢复环境&#xff1a; ESXI上共有数十台虚拟机&#xff0c;EXSI连接一台HP EVA存储&#xff0c;所有虚拟机都存放在该EVA存储上。 其中一台虚拟机是数年前从物理机迁移过来的&#xff0c;其上部署了一个SQL SERVER数据库&#xff0c;该数据库存放了最近几年的数据。 …