存在重复元素(描述一):

  给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 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 解法一:
  思想:先对数组排序;再对数组进行遍历判断是否有重复
class Solution:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
n = sorted(nums)
L = len(n)
i = 0
while i < L - 1:
if n[i] == n[i+1]:
return True
i += 1
return False
解法二:
  1.set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
  2.这种做法的思想就是插入法判断数组有重复
class Solution:
def containsDuplicate(self, nums):
k = set()
for i in nums:
if i in k:
return True
else:
k.add(i)
return False

存在重复元素(描述二):

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 ij 的差的绝对值最大为 k

示例 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 方法一:
用两层循环暴力解决更本通不过,leetcode一共用了23组数据去测试,第22组数据大约有10万个数据,时间复杂度太高因此通不过。
class Solution:
def containsNearbyDuplicate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
两层循环
"""
i = 0
j = i+1
MIN = 10000
while i < len(nums):
while j < len(nums):
if nums[i] == nums[j]:
MIN = abs(i-j)
if MIN <= k:
return True
j += 1
i = i + 1
j = i+1
return False

方法二:

  1.利用python中的字典来减少一层循环

  2.当字典中没有此时遍历的元素,则加入字典

  3.当字典中有此时遍历的元素,则对其索引下标做差,算出绝对值,再与k进行比较

class Solution:
def containsNearbyDuplicate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
1层循环+字典
"""
Dict = {}
for i in range(len(nums)):
if nums[i] in Dict:
if i-Dict[nums[i]] <= k:
return True
Dict[nums[i]] = i
return False

存在重复元素(描述三):

给定一个整数数组,判断数组中是否有两个不同的索引 ij,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 ij 之间的差的绝对值最大为 k

示例 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

存在重复元素(python3)的更多相关文章

  1. Leecode刷题之旅-C语言/python-217存在重复元素

    /* * @lc app=leetcode.cn id=217 lang=c * * [217] 存在重复元素 * * https://leetcode-cn.com/problems/contain ...

  2. Leecode刷题之旅-C语言/python-83删除排序链表中的重复元素

    /* * @lc app=leetcode.cn id=83 lang=c * * [83] 删除排序链表中的重复元素 * * https://leetcode-cn.com/problems/rem ...

  3. python极简代码之检测列表是否有重复元素

    极简python代码收集,实战小项目,不断撸码,以防遗忘.持续更新: 1,检测列表是否有重复元素: 1 # !usr/bin/env python3 2 # *-* coding=utf-8 *-* ...

  4. Js删除数组重复元素的多种方法

    js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了:写下来的目的是希望自己活学活用,下次遇到问题后方便解决. 第一种 function oSort(arr){ v ...

  5. 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)

    最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...

  6. Python列表去除重复元素

    主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...

  7. JS 验证数组中是否包含重复元素

    验证JS中是否包含重复元素,有重复返回true:否则返回false 方案一. function isRepeat(data) { var hash = {}; for (var i in data) ...

  8. ArrayList 实现删除重复元素(元素为对象类型)

    package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 删除集合中的重复的元素(元素是对象形式的) *  * Li ...

  9. ArrayList实现删除重复元素(元素不是对象类型的情况)

    package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 去除ArrayList里面的重复元素 *  * */pub ...

随机推荐

  1. Leetcode 117

    if(root == NULL) return; queue<TreeLinkNode *> que; que.push(root); while(!empty(que)){ int le ...

  2. Struts 2 初步入门(三)

    接Struts 2初步入门(二) 若想用多个通配符设定访问: <struts> <package name="default" namespace="/ ...

  3. JavaScript应用于asp开发场景

    JavaScript应用于asp开发场景 演示代码示例: <%Path="../"%> <!--#include file="../../Inc/Con ...

  4. thinkphp 3.2 加载第三方库 第三方命名空间库

    tp 自动加载的介绍: http://document.thinkphp.cn/manual_3_2.html#autoload 第三方库不规范库 不适用命名空间的库 可以使用import函数导入,其 ...

  5. Astah Professional安装

    asish安装 1● 文件下载   2● 安装图解 3● 破解 replace 4● 测试 success  

  6. 默认五笔输入法qq

    默认五笔输入法   1● 五笔设置   2● 语言设置     Success  

  7. 蓝桥杯—BASIC-27 2n皇后问题(DFS)

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...

  8. Java中的标签

    @SuppressWarnings 简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量 ...

  9. SignalR 前期简单配置

    一.随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR. using Owin; using System; using System.Collections.Generi ...

  10. Java 将图片转成base64,传到前台展示

    后台代码: public String getBase64(SysFile sysFile){ String imgStr = ""; try { File file = new ...