LeetCode150道面试经典题-- 存在重复元素 II(简单)

这篇具有很好参考价值的文章主要介绍了LeetCode150道面试经典题-- 存在重复元素 II(简单)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.题目

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

2.示例

示例 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 <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105

3.思路

哈希表:

        首先看到数组中需要用到索引与对应的值,很明显就能联想到哈希表数据结构与相关查找以减少查找速度,通过遍历数组将未存在于表中的数据与相应的索引存入哈希表中,然后如果遇到存在的键值的数据则找到数据的索引与当前遍历的值进行绝对值相减获取结果进行判定如果符合则返回true。如果遍历结束都没有满足则返回false

4.代码

LeetCode代码

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        int temp;
        
        HashMap<Integer,Integer> map = new HashMap<>();
        for (int i=0;i< nums.length;i++){
            if (map.containsKey(nums[i])){
                temp = map.get(nums[i]);
                if (Math.abs(temp-i)<=k){
                    return true;
                }
            }
            map.put(nums[i],i);
        }
       return false;
    }
}

LeetCode150道面试经典题-- 存在重复元素 II(简单),LeetCode,算法,java,leetcode

时间复杂度为O(n),O(1)

案例详细代码:
 

package LeetCode18;

import java.util.HashMap;

public class javaDemo {
    public static void main(String[] args) {
        int nums[]= new int[]{1,2,3,1};
        int k = 3;
//        中间量
        int temp;
        boolean flag = false;
//        创建哈希表
        HashMap<Integer,Integer> map = new HashMap<>();
//        循环遍历
        for (int i=0;i< nums.length;i++){
//            查找是否已经存在一样的值
            if (map.containsKey(nums[i])){
                temp = map.get(nums[i]);
//                判断两者绝对值差值是否小于等于k
                if (Math.abs(temp-i)<=k){
                    flag = true;
                    break;
                }
            }
//            如果不存在键则把键值都存放到哈希表
            map.put(nums[i],i);
        }
//        输出结果
        System.out.println(flag);
    }
}

会了?试试挑战下一题!♪(^∀^●)ノシ (●´∀`)♪

LeetCode150道面试经典题-- 快乐数(简单)_Alphamilk的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-650117.html

到了这里,关于LeetCode150道面试经典题-- 存在重复元素 II(简单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode150道面试经典题-- 加一(简单)

    给你一个非负整数 x ,计算并返回  x  的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意: 不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入:x=4 输出:2   示例 2: 输入: x = 8 输出: 2 解释: 8 的

    2024年02月12日
    浏览(39)
  • LeetCode150道面试经典题-- 快乐数(简单)

    编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」  定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为  1,那么这个数就是快乐数。 如果

    2024年02月12日
    浏览(41)
  • LeetCode150道面试经典题-合并两个有序数组(简单)

    题目: 给你两个按 非递减顺序 排列的整数数组  nums1 和 nums2 ,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意: 最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对

    2024年02月14日
    浏览(45)
  • LeetCode150道面试经典题-- 合并两个有序链表(简单)

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]    示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3:   输入:l1 = [], l2 = [0] 输出:[0] 递归调用 将这个问题不断拆分

    2024年02月12日
    浏览(40)
  • 219. 存在重复元素 II

    存在重复元素 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 示例

    2024年02月12日
    浏览(37)
  • 面试经典 150 题 - 多数元素

    给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1,2,2] 输出:2 进阶:尝试设计时间复

    2024年01月23日
    浏览(38)
  • 【面试经典150 | 数组】移除元素

    本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删: Tag:介绍本题牵涉到的知识点、数据结构; 题目来源:

    2024年02月09日
    浏览(77)
  • 面试经典150题——删除有序数组中的重复项

    题目来源 力扣每日一题;题序:26 我的题解 方法一 双指针 使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。 时间复杂度 :O(n) 空间复杂度 :O(1) 有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持

    2024年04月14日
    浏览(60)
  • Python每日一练(20230506) 存在重复元素I、II、III

    目录 1. 存在重复元素 Contains Duplicate I 2. 存在重复元素 Contains Duplicate II 3. 存在重复元素 Contains Duplicate III 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个整数数组  nums  。如果任一值在数组中出现  至少两次

    2024年02月03日
    浏览(40)
  • 【面试经典150题】移除元素·JavaScript版

    题目来源 给你一个数组 nums 和一个值 val ,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组 。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 0 = nums

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包