当前位置: 首页 > article >正文

Leetcode:219

1,题目

2,思路

第一种就是简单的暴力比对当时过年没细想

第二种:

  • 用Map的特性key唯一,把数组的值作为Map的key值
  • 我们每加载一个元素都会去判断这个元素在Map里面存在与否
  • 如果存在进行第二个判断条件abs(i-j)<=k,条件
    • 符合直接true
    • 不符合就让在map中存在的元素被新元素覆盖即可,这样能确保后续判断有效,循环结束则false
  • 第二种无论是在时间复杂度还是空间复杂度上都要比第一种更加优解

3,代码

import java.util.HashMap;

public class Leetcode219 {
    public static void main(String[] args) {
        System.out.println(new Solution219().containsNearbyDuplicate(new int[]{1, 2, 3, 1}, 3));
    }
}

class Solution219 {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        //return fun1(nums, k);//方法一:暴力
        return fun2(nums, k);//方法二:哈希表查找
    }

    public boolean fun1(int[] nums, int k) {
        int temp = k + 1;
        for (int i = 0; i < nums.length - 1; i++) {
            int index = nums[i];
            for (int j = i + 1; j < nums.length; j++) {
                int end = nums[j];
                if (index == end && Math.abs(i - j) <= k) {
                    return true;
                } else if (Math.abs(i - j) > k) {
                    break;
                }
            }
        }
        return false;
    }

    public boolean fun2(int[] nums, int k) {
        HashMap<Integer, Integer> map = new HashMap<>();//建立哈希表

        for (int i = 0; i < nums.length; i++) {
            if (!map.containsKey(nums[i])) {
                map.put(nums[i], i);//值为key这样值就是唯一的
            } else {
                int num = map.get(nums[i]);//获取题目中的i
                if (Math.abs(num - i) <= k) {
                    return true;
                } else {
                    map.put(nums[i], i);//否则覆盖
                }
            }
        }
        return false;
    }
}


http://www.kler.cn/a/526003.html

相关文章:

  • DeepSeek-R1 模型及GRPO算法学习
  • 全程Kali linux---CTFshow misc入门(14-24)
  • 【已解决】黑马点评项目Redis版本替换过程的数据迁移
  • STM32 TIM输入捕获 测量频率
  • java——继承
  • concurrent.futures.Future对象详解:利用线程池与进程池实现异步操作
  • Debezium Schema History Recovery 机制详解
  • 钓鱼的肝:春节特别篇
  • 【Elasticsearch】 Intervals Query
  • 为AI聊天工具添加一个知识系统 之74 详细设计之15 正则表达式 之2
  • 【卫星通信】链路预算方法
  • CE11.【C++ Cont】练习题组12(结构体专题)
  • MATLAB中textBoundary函数用法
  • 在godot中接入大模型api,实现npc的自动对话
  • 如何使用Python调用大语言模型的API接口?
  • 【单细胞第二节:单细胞示例数据分析-GSE218208】
  • 改进候鸟优化算法之五:基于多目标优化的候鸟优化算法(MBO-MO)
  • C++ 继承和多态
  • Docker小游戏 | 使用Docker部署FC-web游戏模拟器
  • 顺启逆停程序
  • cursor软件的chat和composer分别是什么
  • 9 Spark性能优化_RDD算子调优
  • 再谈多组学(multi-omics)
  • Cloudreve:Star22.3k,免费开源的网盘,支持多种存储方式,它允许用户快速搭建个人或团队的私有云存储服务。
  • 数据结构与算法学习笔记----容斥原理
  • 基于Java+Swing实现推箱子游戏