存在重复元素(python3)
存在重复元素(描述一):
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 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],并且 i 和 j 的差的绝对值最大为 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
存在重复元素(描述三):
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 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)的更多相关文章
- Leecode刷题之旅-C语言/python-217存在重复元素
/* * @lc app=leetcode.cn id=217 lang=c * * [217] 存在重复元素 * * https://leetcode-cn.com/problems/contain ...
- Leecode刷题之旅-C语言/python-83删除排序链表中的重复元素
/* * @lc app=leetcode.cn id=83 lang=c * * [83] 删除排序链表中的重复元素 * * https://leetcode-cn.com/problems/rem ...
- python极简代码之检测列表是否有重复元素
极简python代码收集,实战小项目,不断撸码,以防遗忘.持续更新: 1,检测列表是否有重复元素: 1 # !usr/bin/env python3 2 # *-* coding=utf-8 *-* ...
- Js删除数组重复元素的多种方法
js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了:写下来的目的是希望自己活学活用,下次遇到问题后方便解决. 第一种 function oSort(arr){ v ...
- 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...
- Python列表去除重复元素
主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...
- JS 验证数组中是否包含重复元素
验证JS中是否包含重复元素,有重复返回true:否则返回false 方案一. function isRepeat(data) { var hash = {}; for (var i in data) ...
- ArrayList 实现删除重复元素(元素为对象类型)
package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 删除集合中的重复的元素(元素是对象形式的) * * Li ...
- ArrayList实现删除重复元素(元素不是对象类型的情况)
package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 去除ArrayList里面的重复元素 * * */pub ...
随机推荐
- Oracle PL/SQL语言函数、匿名语句及循环
一.自定义函数 格式: create or replace function 函数名(参数名 参数类型...) return 返回值类型 as xx vachar2(20) ...
- python-爬虫框架scrapy
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- leetcode-algorithms-27 Remove Element
leetcode-algorithms-27 Remove Element Given an array nums and a value val, remove all instances of t ...
- python中sorted和.sorted 、reversed和reverse的注意点
L=[1,2,3,4]l1=[123,123,23]if l1.sort() == L.reverse(): #这个判断式是恒等的,因为两个函数的返回值都是None(其实是无返回值) pri ...
- PostgreSQL导出一张表到MySQL
1. 查看PostgreSQL表结构,数据量,是否有特殊字段值 region_il=# select count(*) from result_basic; count --------- ( row ...
- css制作tips提示框,气泡框,制作三角形
有时候我们的页面会需要这样的一些提示框或者叫气泡框,运用css,我们可以实现这样的效果. 为了实现上面的效果,我们首先要理解如何制作三角形. 当我们给一个DIV不同颜色的边框的时候,我们可以得到下面的 ...
- laravel composer 安装指定版本以及基本的配置
1 安装指定的 laravel版本 以下的案例是安装5.2版本 composer create-project laravel/laravel=5.2.* --prefer-dist 2 配置 优化相 ...
- learning svn change commit log
将repository内hook子文件夹中的pre-revprop-change.tmpl复制改成pre-revprop-change.bat,内容改为:exit 0
- learning at command AT+CEREG
AT command AT+CEREG [Purpose] Learning how to query the network registration status [Eeviro ...
- Python pycharm 引入需要使用的包
第一步 第二步 第三步