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

LeetCode697

好的,根据你提供的代码和LeetCode题号(697),我将帮助你生成一个结构化的Markdown文档。首先,我们需要补充一些必要的信息,如题目描述、示例、思路分析等。如果你能提供这些信息会更好,否则我会基于常见的题解模式进行推测。

以下是完整的Markdown文档:

# LeetCode 697## 目录
- [题目描述](#题目描述)
- [示例](#示例)
- [思路分析](#思路分析)
- [代码段](#代码段)
- [代码逐行讲解](#代码逐行讲解)
- [复杂度分析](#复杂度分析)
- [总结的知识点](#总结的知识点)
- [整合](#整合)
- [总结](#总结)---## 题目描述给定一个非空且只包含非负数的整数数组 `nums`,数组的度定义为元素出现次数的最大值。找到与原数组具有相同度的最短连续子数组,并返回其长度。---## 示例### 示例 1**输入:**
```java
nums = [1, 2, 2, 3, 1]

输出:

2

解释:

  • 数组的度是2,因为元素2出现了两次。
  • 最短的子数组是从索引1到2,长度为2。

示例 2

输入:

nums = [1,2,2,3,1,4,2]

输出:

6

解释:

  • 数组的度是3,因为元素2出现了三次。
  • 最短的子数组是从索引1到6,长度为6。

思路分析

问题核心

找到与原数组具有相同度的最短连续子数组,并返回其长度。

思路拆解

  1. 统计每个元素的出现次数
    • 使用哈希表记录每个元素的出现次数。
  2. 确定数组的度
    • 找出出现次数最多的元素的次数。
  3. 寻找最短子数组
    • 使用滑动窗口技术来找到满足条件的最短子数组。

代码段

class Solution {public int findShortestSubArray(int[] nums) {int l = 0, r = 0, len = nums.length, res = len + 1;Map<Integer, Integer> map = new HashMap<>();Map<Integer, Integer> map1 = new HashMap<>();int count = 0;for (int i : nums) {map1.put(i, map1.getOrDefault(i, 0) + 1);count = Math.max(count, map1.get(i));}while (r < len) {map.put(nums[r], map.getOrDefault(nums[r], 0) + 1);r++;while (map.get(nums[r - 1]) == count) {map.put(nums[l], map.get(nums[l]) - 1);res = Math.min(res, r - l);l++;}}return res;}
}

在这里插入图片描述


代码逐行讲解

  1. 初始化变量

    int l = 0, r = 0, len = nums.length, res = len + 1;
    
    • 初始化左右指针lr,数组长度len,以及结果res
  2. 统计每个元素的出现次数

    Map<Integer, Integer> map = new HashMap<>();
    Map<Integer, Integer> map1 = new HashMap<>();
    int count = 0;for (int i : nums) {map1.put(i, map1.getOrDefault(i, 0) + 1);count = Math.max(count, map1.get(i));
    }
    
    • 使用map1统计每个元素的出现次数,并找出最大出现次数count
  3. 滑动窗口查找最短子数组

    while (r < len) {map.put(nums[r], map.getOrDefault(nums[r], 0) + 1);r++;while (map.get(nums[r - 1]) == count) {map.put(nums[l], map.get(nums[l]) - 1);res = Math.min(res, r - l);l++;}
    }
    
    • 使用滑动窗口技术查找满足条件的最短子数组。
  4. 返回结果

    return res;
    

复杂度分析

时间复杂度

  • 统计元素出现次数:O(n)
  • 滑动窗口遍历:O(n)
  • 总时间复杂度:O(n)

空间复杂度

  • 使用了两个哈希表存储元素及其出现次数:O(n)

总结的知识点

  1. 哈希表的应用
    • 用于统计元素出现次数。
  2. 滑动窗口技术
    • 用于高效查找满足条件的最短子数组。
  3. 数组度的概念
    • 数组中元素出现次数的最大值。

整合

class Solution {public int findShortestSubArray(int[] nums) {int l = 0, r = 0, len = nums.length, res = len + 1;Map<Integer, Integer> map = new HashMap<>();Map<Integer, Integer> map1 = new HashMap<>();int count = 0;for (int i : nums) {map1.put(i, map1.getOrDefault(i, 0) + 1);count = Math.max(count, map1.get(i));}while (r < len) {map.put(nums[r], map.getOrDefault(nums[r], 0) + 1);r++;while (map.get(nums[r - 1]) == count) {map.put(nums[l], map.get(nums[l]) - 1);res = Math.min(res, r - l);l++;}}return res;}
}

总结

通过使用哈希表统计每个元素的出现次数,并结合滑动窗口技术,可以高效地找到与原数组具有相同度的最短连续子数组。


相关文章:

LeetCode697

好的&#xff0c;根据你提供的代码和LeetCode题号&#xff08;697&#xff09;&#xff0c;我将帮助你生成一个结构化的Markdown文档。首先&#xff0c;我们需要补充一些必要的信息&#xff0c;如题目描述、示例、思路分析等。如果你能提供这些信息会更好&#xff0c;否则我会基…...

js基本功(四)

ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。 可以通过 charCodeAt() 方法获取字符的 ASCII 码,也可以通过 String.fromCharCode() 方法将 ASCII 码转…...

linux | Vim 命令快捷操作

注&#xff1a;本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #&#xff1a;向前查找光标当前所在单词&#xff0c;并跳转到该单词的上一个出现位置。*&#xff1a;向后查找光标当前所在单词&#xff0c;并跳转到该单词的下一个出现位置。 行内跳转 0&#xff1a;跳转…...

开源订货系统哪个好 三大订货系统源码推荐

在数字化转型加速的今天&#xff0c;企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率&#xff0c;还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求&#xff0c;为您精选三款主流订货系统源码&#xff0c;助您快速搭…...

跟着 Lua 5.1 官方参考文档学习 Lua (11)

文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子&#xff1a;string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...

使用 MyBatis XML 和 QueryWrapper 实现动态查询

本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。 1. XML 中定义基本查询 首先&#xff0c;在 MyBatis XML 文件中定义一个基本的 select 查询&#xff1a; <select id"selectCode" resultType"java.util.Ma…...

视频理解开山之作 “双流网络”

1 论文核心信息 1.1核心问题 任务&#xff1a;如何利用深度学习方法进行视频中的动作识别&#xff08;Action Recognition&#xff09;。挑战&#xff1a; 视频包含时空信息&#xff0c;既需要捕捉静态外观特征&#xff08;Spatial Information&#xff09;&#xff0c;也需要…...

每日一题——搜索二维矩阵

搜索二维矩阵 一、题目背景二、题目描述示例 1&#xff1a;示例 2&#xff1a;约束条件&#xff1a; 三、解题思路分析1. **错误思路回顾**2. **Z字形查找算法**算法步骤&#xff1a; 3. **算法优势** 四、代码实现代码说明&#xff1a; 五、测试用例测试用例 1&#xff1a;测试…...

PPT 小黑第21套

对应大猫22 动作按钮 “转到首页” 编号从1开始显示&#xff0c;点设计 -幻灯片大小 -修改幻灯片编号起始值为0&#xff08;那么第二张幻灯片页码为1&#xff09;...

大模型day01自然语言+大模型+环境

[TOC]大模型day01 自然语言处理 汉字的词是连着的&#xff0c;所以需要一个汉语处理模块&#xff0c;把词语、成语自动加空格隔开。 知识图谱构建——>从大语言文本挖掘出来 自然语言处理&#xff1a;翻译、智能语音 自然语言处理&#xff1a;理解一句话意思&#xff0c…...

VSTO(C#)Excel开发3:Range对象 处理列宽和行高

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

【2025】Electron + React 架构筑基——从零到一的跨平台开发

引言 源代码仓库&#xff1a; Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status&#xff0c;却依然无法直观看到文件变化&#xff1f; 是否羡慕VS Code的丝滑Git集成&#xff0c;却苦恼于无法定制自己的专属工具&#xff1f; 本专栏将为你打开一扇新的…...

AWS 如何导入内部SSL 证书

SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…...

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…...

【空地协同技术教程:概念与技术手段解析】

空地协同技术教程&#xff1a;概念与技术手段解析 一、空地协同的概念与核心价值 定义 空地协同&#xff08;Air-Ground Collaboration&#xff09;是指通过无人机&#xff08;UAV&#xff09;与无人车&#xff08;UGV&#xff09;等异构平台的跨域协作&#xff0c;利用各自的…...

【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)

2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考&#xff0c;小编特意收集并整理了最新版&#xff08;备考2025年3月&#xff09;的小黑课堂计算机二级WPS 电脑题库软件&#xff0c;助力考生在考试中游刃有余&#xff0c;轻松通关&#xff01; …...

蓝桥杯备赛:炮弹

题目解析 这道题目是一道模拟加调和级数&#xff0c;难的就是调和级数&#xff0c;模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程&#xff0c;可能出现来回跳的情况&#xff0c;那么为了解决这种情况&#xff0c;我们采取的方法是设定其的上限步数。那么…...

kotlin高级用法总结

Kotlin 是一门功能强大且灵活的编程语言&#xff0c;除了基础语法外&#xff0c;它还提供了许多高级特性&#xff0c;可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法&#xff0c;涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

transformers - AWQ

本文翻译整理自&#xff1a;https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言 Activation-aware Weight Quantization (AWQ) 激活…...

mysql下载与安装、关系数据库和表的创建

一、mysql下载&#xff1a; MySQL获取&#xff1a; 官网&#xff1a;www.mysql.com 也可以从Oracle官方进入&#xff1a;https://www.oracle.com/ 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统&#xff…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...