Golang每日一练(leetDay0078) 存在重复元素 II\III ContainsDuplicate

news2024/10/6 9:09:30

目录

219. 存在重复元素 II Contains Duplicate ii  🌟

220. 存在重复元素 III Contains Duplicate iii  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


219. 存在重复元素 II 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

代码:

package main

import (
	"fmt"
)

func containsNearbyDuplicate(nums []int, k int) bool {
	n := len(nums)
	for i := 0; i < n; i++ {
		for j := i + 1; j < n; j++ {
			if nums[i] == nums[j] && abs(i-j) <= k {
				return true
			}
		}
	}
	return false
}

func containsNearbyDuplicate2(nums []int, k int) bool {
	n := len(nums)
	m := make(map[int]int)
	for i := 0; i < n; i++ {
		if j, ok := m[nums[i]]; ok && abs(i-j) <= k {
			return true
		}
		m[nums[i]] = i
	}
	return false
}

func containsNearbyDuplicate3(nums []int, k int) bool {
	n := len(nums)
	m := make(map[int]int)
	for i := 0; i < n; i++ {
		if i > k {
			delete(m, nums[i-k-1])
		}
		if j, ok := m[nums[i]]; ok && abs(i-j) <= k {
			return true
		}
		m[nums[i]] = i
	}
	return false
}

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	nums := []int{1, 2, 3, 1}
	fmt.Println(containsNearbyDuplicate(nums, 3))
	nums = []int{1, 0, 1, 1}
	fmt.Println(containsNearbyDuplicate(nums, 1))
	nums = []int{1, 2, 3, 1, 2, 3}
	fmt.Println(containsNearbyDuplicate(nums, 2))

	nums = []int{1, 2, 3, 1}
	fmt.Println(containsNearbyDuplicate2(nums, 3))
	nums = []int{1, 0, 1, 1}
	fmt.Println(containsNearbyDuplicate2(nums, 1))
	nums = []int{1, 2, 3, 1, 2, 3}
	fmt.Println(containsNearbyDuplicate2(nums, 2))

	nums = []int{1, 2, 3, 1}
	fmt.Println(containsNearbyDuplicate3(nums, 3))
	nums = []int{1, 0, 1, 1}
	fmt.Println(containsNearbyDuplicate3(nums, 1))
	nums = []int{1, 2, 3, 1, 2, 3}
	fmt.Println(containsNearbyDuplicate3(nums, 2))
}

输出:

true
true
false

true
true
false

true
true
​​​​​​​false


220. 存在重复元素 III 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

代码:

package main

import (
	"fmt"
)

func containsNearbyAlmostDuplicate(nums []int, k int, t int) bool {
	n := len(nums)
	if n < 2 || k < 1 || t < 0 {
		return false
	}

	buckets := make(map[int]int)
	w := t + 1
	for i := 0; i < n; i++ {
		if i > k {
			delete(buckets, getBucketId(nums[i-k-1], w))
		}
		bucketId := getBucketId(nums[i], w)
		if _, ok := buckets[bucketId]; ok {
			return true
		}
		if v, ok := buckets[bucketId-1]; ok && abs(nums[i]-v) <= t {
			return true
		}
		if v, ok := buckets[bucketId+1]; ok && abs(nums[i]-v) <= t {
			return true
		}
		buckets[bucketId] = nums[i]
	}
	return false
}

func getBucketId(x, w int) int {
	if x >= 0 {
		return x / w
	}
	return (x+1)/w - 1
}

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	nums := []int{1, 2, 3, 1}
	fmt.Println(containsNearbyAlmostDuplicate(nums, 3, 0))
	nums = []int{1, 0, 1, 1}
	fmt.Println(containsNearbyAlmostDuplicate(nums, 1, 2))
	nums = []int{1, 5, 9, 1, 5, 9}
	fmt.Println(containsNearbyAlmostDuplicate(nums, 2, 3))
}

输出:

true
true
false


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练 专栏

(2023.3.11~)更新中...

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更

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

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

相关文章

chatgpt赋能python:Python判断语句:if语句

Python判断语句&#xff1a;if语句 在Python编程中&#xff0c;判断语句是非常重要的语法之一。if语句是最基本的判断语句&#xff0c;可以根据条件的真假来执行我们需要的代码块。 什么是if语句&#xff1f; if语句是一种条件语句。在Python中&#xff0c;if语句用于执行一…

C++泛型编程之模板

目录 一、什么是泛型编程 二、函数模板 2.1函数模板的概念 2.2函数模板格式 2.3函数模板的原理 2.5函数模板的实例化 2.6模板参数的匹配原则 三、类模板 3.1类模板的定义格式 3.2 类模板的实例化 四、非类型模板参数 五、模板的特化 5.1模板特化的概念&#xff1a;…

chatgpt赋能python:Python在SEO中的应用

Python在SEO中的应用 Python是一种语言&#xff0c;用于编写应用程序。近年来&#xff0c;Python编程成为了最受欢迎的编程语言之一。Python主要用于数据分析、机器学习、人工智能等方向。但是&#xff0c;Python在SEO中的应用也引起了越来越多的人的关注。那么&#xff0c;在…

bean的作用域及生命周期

目录 bean的作用域 ①概念 ②创建类User ③配置bean ④测试 bean生命周期 ①具体的生命周期过程 ②修改类User ③配置bean ④测试 ⑤bean的后置处理器 bean的作用域 ①概念 在Spring中可以通过配置bean标签的scope属性来指定bean的作用域范围&#xff0c;各取…

Java组合模式:构建多层次公司组织架构

在现实生活中&#xff0c;常常会遇到用树形结构组织的一些场景&#xff0c;比如国家省市&#xff0c;学校班级&#xff0c;文件目录&#xff0c;分级导航菜单&#xff0c;以及典型的公司组织架构&#xff0c;整个层次结构自顶向下呈现一颗倒置的树。这种树形结构在面向对象的世…

23 直接使用 dom api 更新了 #text节点, 之后响应式更新不生效了

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 问题引发自 VueComponent 响应式处理 里面有一段内容, 直接在 console 中…

5月份月刊总结

5月份月刊总结 目录概述需求&#xff1a; 设计思路实现思路分析1.技术经理 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Sur…

我是如何利用业余时间写书的?---时间管理

低级的欲望放纵即可获得&#xff0c;高级的欲望只有克制才能达成。——卡耐基粉丝的误会 很多粉丝&#xff0c;问我&#xff0c; “彭老师你是不是自己创业了&#xff1f;” “彭老师我想报您的培训班。” … 得知我知识业余时间写文章&#xff0c;紧接着又会问&#xff0c; …

python+vue高校体育比赛赛事信息系统

本公共体育赛事管理系统是一个公共体育赛事管理信息的平台&#xff0c;采用vue&#xff0c;MYSQL的开发环境&#xff0c;后台使用python开发架构&#xff0c;并使用django简化对数据库方面的操作&#xff0c;基于B/S结构进行开发。本系统主要实现用户在线进行密码管理&#xff…

[数据集][目标检测]目标检测数据集绝缘子缺陷防震锤1688张5类别VOC格式

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1688 标注数量(xml文件个数)&#xff1a;1688 标注类别数&#xff1a;5 标注类别名称:["flashover",&…

chatgpt赋能python:Python彩色转黑白简介

Python彩色转黑白简介 Python是一种高级编程语言&#xff0c;提供了许多内置功能和库来进行图像处理。其中之一就是彩色转黑白。彩色图像是RGB&#xff08;红色&#xff0c;绿色和蓝色&#xff09;通道的混合&#xff0c;而黑白图像则只有灰度值。 在本篇文章中&#xff0c;我…

Go 中的随机性测试

&#x1f447;我在这儿 这是关于 Go 语言模糊测试的四部分教程系列的第一部分: 1、Go 语言中的随机测试 2、Go 语言中的模糊测试 3、写一个 Go 语言的模糊测试目标(即将推出) 4、通过模糊化发现漏洞(即将推出) 为我们的 Go 程序选择好的测试用例有点看运气。有时我们很幸运找到…

chatgpt赋能python:Python字符串首字母大写的方法,让你的SEO效果更佳

Python字符串首字母大写的方法&#xff0c;让你的SEO效果更佳 在许多编程语言中&#xff0c;字符串都是一种基本的数据类型。在Python中&#xff0c;字符串是一个非常重要的数据类型&#xff0c;因为在很多情况下&#xff0c;它被用来表示文本。在这篇文章中&#xff0c;我们将…

chatgpt赋能python:Python扫描在SEO中的重要性

Python扫描在SEO中的重要性 Python扫描是一种快速检测网站漏洞和异常的方式&#xff0c;也是SEO方案中不可或缺的一部分。一般来说&#xff0c;Python扫描被用来检测在网站上常见的安全风险&#xff0c;并且使用这种方式可以快速且准确地查找和修复问题。 什么是Python扫描 …

fftw的使用

1、下载编译 官网&#xff1a;http://www.fftw.org/index.html 2、FFT基础知识 2.1 概念 FFT分辨率可以表示为&#xff1a;fs/Nfft 频率分辨率的物理量就是&#xff1a;观测信号的时间窗长度&#xff0c; 时间窗越长&#xff08;N大&#xff09;&#xff0c; 对应频率分辨率…

chatgpt赋能python:Python循环与内存管理

Python循环与内存管理 在编写Python代码时&#xff0c;循环是不可避免的。但是循环&#xff0c;特别是无限循环&#xff0c;会导致内存问题&#xff0c;影响程序性能及其稳定性。本文将重点介绍Python循环和内存管理。 Python循环 在Python中&#xff0c;有三种循环结构&…

史上最全Android性能优化方案解析

Android中的性能优分为以下几个方面&#xff1a; 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 …… 一.布局优化 布局优化的本质就是减少View的层级。常见的布局优化方案如下&#xff1a; 在LinearLayout和RelativeLayout都可以完成布局的情况下优先选择LinearL…

chatgpt赋能python:Python如何清理输出的屏幕?

Python 如何清理输出的屏幕&#xff1f; 在 Python 编程中&#xff0c;我们经常需要在控制台上输出一些信息。但是当输出信息过多时&#xff0c;控制台的屏幕可能会变得很杂乱。这时候&#xff0c;我们就需要清理掉原有的输出内容&#xff0c;以便更好地展示新的信息。那么&am…

26 VueComponent 其他属性的更新

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 比如这里看一下 class 的更新 测试用例如下, 增加 topClazz …

使用stable diffusion webui时,安装gfpgan失败的解决方案(windows下的操作)

1.问题描述 初次打开stable diffusion webui时&#xff0c;需要安装gfpgan等github项目。但在安装gfpgan时&#xff0c;显示RuntimeError: Couldnt install gfpgan 2.解决方案 无法安装gfpgan的原因是网络问题&#xff0c;就算已经科学上网&#xff0c;并设置为全局&#x…