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。
思路分析
问题核心
找到与原数组具有相同度的最短连续子数组,并返回其长度。
思路拆解
- 统计每个元素的出现次数:
- 使用哈希表记录每个元素的出现次数。
- 确定数组的度:
- 找出出现次数最多的元素的次数。
- 寻找最短子数组:
- 使用滑动窗口技术来找到满足条件的最短子数组。
代码段
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;}
}

代码逐行讲解
-
初始化变量:
int l = 0, r = 0, len = nums.length, res = len + 1;- 初始化左右指针
l和r,数组长度len,以及结果res。
- 初始化左右指针
-
统计每个元素的出现次数:
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。
- 使用
-
滑动窗口查找最短子数组:
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;
复杂度分析
时间复杂度
- 统计元素出现次数:O(n)
- 滑动窗口遍历:O(n)
- 总时间复杂度:O(n)
空间复杂度
- 使用了两个哈希表存储元素及其出现次数:O(n)
总结的知识点
- 哈希表的应用:
- 用于统计元素出现次数。
- 滑动窗口技术:
- 用于高效查找满足条件的最短子数组。
- 数组度的概念:
- 数组中元素出现次数的最大值。
整合
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
好的,根据你提供的代码和LeetCode题号(697),我将帮助你生成一个结构化的Markdown文档。首先,我们需要补充一些必要的信息,如题目描述、示例、思路分析等。如果你能提供这些信息会更好,否则我会基…...
js基本功(四)
ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。 可以通过 charCodeAt() 方法获取字符的 ASCII 码,也可以通过 String.fromCharCode() 方法将 ASCII 码转…...
linux | Vim 命令快捷操作
注:本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。*:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。 行内跳转 0:跳转…...
开源订货系统哪个好 三大订货系统源码推荐
在数字化转型加速的今天,企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率,还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求,为您精选三款主流订货系统源码,助您快速搭…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子: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 中定义基本查询 首先,在 MyBatis XML 文件中定义一个基本的 select 查询: <select id"selectCode" resultType"java.util.Ma…...
视频理解开山之作 “双流网络”
1 论文核心信息 1.1核心问题 任务:如何利用深度学习方法进行视频中的动作识别(Action Recognition)。挑战: 视频包含时空信息,既需要捕捉静态外观特征(Spatial Information),也需要…...
每日一题——搜索二维矩阵
搜索二维矩阵 一、题目背景二、题目描述示例 1:示例 2:约束条件: 三、解题思路分析1. **错误思路回顾**2. **Z字形查找算法**算法步骤: 3. **算法优势** 四、代码实现代码说明: 五、测试用例测试用例 1:测试…...
PPT 小黑第21套
对应大猫22 动作按钮 “转到首页” 编号从1开始显示,点设计 -幻灯片大小 -修改幻灯片编号起始值为0(那么第二张幻灯片页码为1)...
大模型day01自然语言+大模型+环境
[TOC]大模型day01 自然语言处理 汉字的词是连着的,所以需要一个汉语处理模块,把词语、成语自动加空格隔开。 知识图谱构建——>从大语言文本挖掘出来 自然语言处理:翻译、智能语音 自然语言处理:理解一句话意思,…...
VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
【2025】Electron + React 架构筑基——从零到一的跨平台开发
引言 源代码仓库: Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status,却依然无法直观看到文件变化? 是否羡慕VS Code的丝滑Git集成,却苦恼于无法定制自己的专属工具? 本专栏将为你打开一扇新的…...
AWS 如何导入内部SSL 证书
SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…...
清华北大推出的 DeepSeek 教程(附 PDF 下载链接)
清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf 北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf 清华 Deep…...
【空地协同技术教程:概念与技术手段解析】
空地协同技术教程:概念与技术手段解析 一、空地协同的概念与核心价值 定义 空地协同(Air-Ground Collaboration)是指通过无人机(UAV)与无人车(UGV)等异构平台的跨域协作,利用各自的…...
【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)
2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考,小编特意收集并整理了最新版(备考2025年3月)的小黑课堂计算机二级WPS 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...
蓝桥杯备赛:炮弹
题目解析 这道题目是一道模拟加调和级数,难的就是调和级数,模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程,可能出现来回跳的情况,那么为了解决这种情况,我们采取的方法是设定其的上限步数。那么…...
kotlin高级用法总结
Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...
transformers - AWQ
本文翻译整理自:https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言 Activation-aware Weight Quantization (AWQ) 激活…...
mysql下载与安装、关系数据库和表的创建
一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统ÿ…...
Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
大家好,我是Tony Bai。在这个大模型(AI)写代码如喝水一般简单的时代,你有没有遇到过一种极其憋屈的场景:你让 Claude Code 或者 Codex 帮你写了一段 Go 语言代码,逻辑清晰,结构优雅,…...
Hain性能优化终极教程:10个技巧让你的启动器运行更快更稳定
Hain性能优化终极教程:10个技巧让你的启动器运行更快更稳定 【免费下载链接】hain An altspace launcher for Windows, built with Electron 项目地址: https://gitcode.com/gh_mirrors/ha/hain 想要让你的Hain启动器运行如飞吗?作为一款基于Elec…...
COMSOL 钢制支架静态分析:从建模到结果解析
comsol支架-静态分析, COMSOL Multiphysics 和“结构力学模块”中对结构力学问题进行建模的基本原理及操作。 介绍线性静态分析,包括材料属性和边界条件的定义。 在计算出解之后,学习如何分析结果并检查反作用力。 模型是钢制支架。 这种支架…...
OptiScaler终极配置指南:解锁游戏画质提升的7个关键技术
OptiScaler终极配置指南:解锁游戏画质提升的7个关键技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler是一…...
从提示词到执行:OpenClaw百川2-13B-4bits自动化任务拆解全流程
从提示词到执行:OpenClaw百川2-13B-4bits自动化任务拆解全流程 1. 为什么需要任务拆解 上周我需要整理一批行业报告数据,手动操作需要反复在浏览器、Excel和记事本之间切换。当我尝试用OpenClaw百川2-13B模型实现自动化时,发现简单的"…...
敏捷开发实战指南:提升团队效率的5个秘诀
在快速迭代的敏捷开发中,测试团队既是质量守门人,也是流程加速器。本文从软件测试从业者的专业视角,提炼五个经过实战验证的高效实践,助力团队突破协作瓶颈、缩短反馈周期,实现质量与速度的双重提升。秘诀一࿱…...
革新3D资源获取:Sketchfab模型下载技术破解与实践指南
革新3D资源获取:Sketchfab模型下载技术破解与实践指南 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在数字创意产业蓬勃发展的今天,3D模型…...
解锁B站视频资源:bilibili-parse解析工具全面应用指南
解锁B站视频资源:bilibili-parse解析工具全面应用指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse bilibili-parse是一款基于PHP开发的Bilibili视频解析工具,为开发者提供简…...
智能协作:让快马AI成为你的算法优化顾问,自动分析并改进代码
今天想和大家分享一个特别实用的开发技巧——如何用AI辅助优化算法代码。作为一个经常和动态规划算法打交道的开发者,我发现InsCode(快马)平台的AI功能真的能帮我们省去很多重复劳动。 先说说我最近遇到的一个实际问题:经典的0-1背包问题。虽然动态规划…...
无人机组装调试仿真教学软件技术解析(架构+功能+落地)| 产品实测
在无人机职业教育领域,仿真教学软件的核心价值是“还原实操场景、降低落地成本、提升教学效率”,但目前多数同类软件普遍存在架构冗余、3D交互卡顿、功能与教学场景脱节、后台管理薄弱等痛点,难以满足院校规模化、标准化的组装调试教学需求。…...
