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

江西航达建设集团网站做神马seo快速排名软件

江西航达建设集团网站,做神马seo快速排名软件,聊城网站制作需要多少钱,成都疫情最新新增LeetCode1287 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题目描述 给定一个非递减的整数数组 arr,其中有一个元素恰好出现超过数组长度的 25%。请你找到并返回这个元素。 示例 示例 1 输入: arr [1, 2, 2, 6, 6, 6, 6, 7,…

LeetCode1287

目录

  • 题目描述
  • 示例
  • 思路分析
  • 代码段
  • 代码逐行讲解
  • 复杂度分析
  • 总结的知识点
  • 整合
  • 总结

题目描述

给定一个非递减的整数数组 arr,其中有一个元素恰好出现超过数组长度的 25%。请你找到并返回这个元素。


示例

示例 1

输入:

arr = [1, 2, 2, 6, 6, 6, 6, 7, 10]

输出:

6

解释:

  • 数组长度为 9,6 出现了 4 次,超过了 25%(即 2.25 次)。

示例 2

输入:

arr = [1, 1]

输出:

1

解释:

  • 数组长度为 2,1 出现了 2 次,超过了 25%(即 0.5 次)。

思路分析

问题核心

我们需要找到一个在数组中出现次数超过数组长度 25% 的元素。

思路拆解

  1. 特殊情况处理
    • 如果数组长度为 1,直接返回该元素。
  2. 计算阈值
    • 计算数组长度的 25%,即 len / 4
  3. 统计元素频率
    • 使用哈希表 Map 统计每个元素的出现次数。
  4. 判断是否超过阈值
    • 在统计过程中,如果某个元素的出现次数超过阈值,直接返回该元素。

代码段

class Solution {public int findSpecialInteger(int[] arr) {int len= arr.length;if(len==1)return arr[0];int num=len/4;Map<Integer,Integer> map=new HashMap<>();for (int count : arr) {int  temp=map.getOrDefault(count,0)+1;if(temp>num){return count;}else{map.put(count,temp);}}return -1;}
}

在这里插入图片描述


代码逐行讲解

1. 获取数组长度

int len = arr.length;
  • len 是数组的长度,用于后续计算阈值。

2. 特殊情况处理

if (len == 1)return arr[0];
  • 如果数组长度为 1,直接返回该元素。

3. 计算阈值

int num = len / 4;
  • num 是数组长度的 25%,用于判断元素是否超过阈值。

4. 初始化哈希表

Map<Integer, Integer> map = new HashMap<>();
  • map 用于统计每个元素的出现次数。

5. 遍历数组

for (int count : arr) {
  • 使用增强的 for 循环遍历数组中的每个元素。

6. 更新当前元素的频率

int temp = map.getOrDefault(count, 0) + 1;
  • temp 是当前元素的出现次数,初始值为哈希表中的值加 1。

7. 判断是否超过阈值

if (temp > num) {return count;
}
  • 如果当前元素的出现次数超过阈值,直接返回该元素。

8. 更新哈希表

map.put(count, temp);
  • 将当前元素的出现次数更新到哈希表中。

9. 返回默认值

return -1;
  • 如果没有找到符合条件的元素,返回 -1

复杂度分析

时间复杂度

  • 遍历数组一次,时间复杂度为 O(n),其中 n 是数组的长度。

空间复杂度

  • 使用了一个哈希表,最坏情况下需要存储所有元素的频率,因此空间复杂度为 O(n)

总结的知识点

1. 哈希表的使用

  • 使用 HashMap 统计元素的出现次数。

2. 边界条件处理

  • 处理数组长度为 1 的特殊情况。

3. 增强的 for 循环

  • 使用增强的 for 循环遍历数组。

4. 阈值计算

  • 计算数组长度的 25%,用于判断元素是否超过阈值。

整合

class Solution {public int findSpecialInteger(int[] arr) {int len = arr.length; // 数组长度if (len == 1) // 特殊情况处理return arr[0];int num = len / 4; // 计算阈值Map<Integer, Integer> map = new HashMap<>(); // 哈希表统计频率for (int count : arr) { // 遍历数组int temp = map.getOrDefault(count, 0) + 1; // 更新当前元素的频率if (temp > num) { // 判断是否超过阈值return count;} else {map.put(count, temp); // 更新哈希表}}return -1; // 如果没有找到,返回 -1}
}

总结

通过哈希表统计元素的出现次数,并在遍历过程中判断是否超过阈值,能够高效地解决问题。代码逻辑清晰,复杂度控制在合理范围内,适合面试或竞赛场景。希望这个分析对你有帮助!

http://www.dtcms.com/wzjs/314997.html

相关文章:

  • 下载专门做初中数学题的网站市场调研的重要性
  • 汕头网站优化电话如何免费做网站推广的
  • 手机网页制作公司排名郑州seo技术顾问
  • 网站后台怎样推荐图片网页制作app手机版
  • 宁乡市建设局网站清远疫情防控措施
  • 空间如何安装wordpress天津债务优化公司
  • 嘉兴做外贸网站的公司网站优化联系
  • 福州市工程建设质量管理网站网站优化要多少钱
  • 做系统去哪个网站好免费推广网站大全
  • 毕设代做网站百度应用市场下载安装
  • 做装饰材料的网站谷歌外链
  • 用wordpress建立导航网站自制网页
  • 建设工程168网站百度云引擎搜索
  • 网站上怎么做星星评分企业网站优化外包
  • 山东恒昆建设工程有限公司网站国家免费技能培训官网
  • 宁波十大口碑最好的装饰公司评论优化
  • 南昌做网站的公司网站建设优化哪家公司好
  • 机械网站建设注意什么查询网址域名
  • 临沂网站开发技术员微信软文案例
  • 网站在线客服软件百度搜索工具
  • 手机建设网站的目的网站建成后应该如何推广
  • 做海报的网站小白qq百度如何搜索网址
  • 做的好详情页网站系统优化app
  • 济南地区做企业网站的公司seo推广外包
  • 建设一个怎样的自己的网站传统营销
  • 怎么做网站代理商如何做好网络推广
  • 动漫制作seo技术分享博客
  • 网站改版建设情况的汇报seo公司排名
  • 子网站建设的好处来客seo
  • 昆明旅行社网站开发24小时免费看的视频哔哩哔哩