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

LeetCode 1426 题:数元素解题全解析

LeetCode 1426 题:数元素解题全解析

在算法的世界里,每一道题目都是一次挑战与探索。今天,我们来深入剖析 LeetCode 上的一道有趣题目 ——1426. 数元素。

一、题目剖析

给定一个整数数组 arr,这里有着独特的计数规则:对于元素 x,唯有当 x + 1 也在数组 arr 中时,这个 x 才能被记为 1 个数。特别要注意的是,若数组 arr 中有重复的数,每个重复的数都要单独依据此规则进行计算。

比如,示例 1 中输入 arr = [1, 2, 3],输出为 2。这是因为 1 对应的 2 在数组中,2 对应的 3 也在数组中,所以 1 和 2 都满足计数条件,可被计算。而在示例 2 中,输入 arr = [1, 1, 3, 3, 5, 5, 7, 7],输出是 0。原因在于数组中不存在 2468,致使 1357 均不符合计数条件。同时,题目还给出了约束:1 <= arr.length <= 10000 <= arr[i] <= 1000

二、解题思路

面对这道题,我们采用了一种高效的方法 —— 利用 HashSet 来解决。

首先,我们遍历整个数组 arr,将数组中的每个元素逐一添加到 HashSet 中。这一步的目的是利用 HashSet 快速查找元素的特性,为后续的判断提供便利。

接着,我们再次遍历数组 arr。对于数组中的每个元素 arr[i],我们通过 HashSet 检查 arr[i] + 1 是否存在。如果存在,说明 arr[i] 满足题目要求的计数条件,此时我们将计数器 result 加 1。

三、代码实现

package \_1426;

import java.util.HashSet;

public class LeetCode1426 {

&#x20;   public int countElements(int\[] arr) {

&#x20;       var hashSet = new HashSet\<Integer>();

&#x20;       var result = 0;

&#x20;       for (var i = 0; i < arr.length; i++) {

&#x20;           hashSet.add(arr\[i]);

&#x20;       }

&#x20;       for (var i = 0; i < arr.length; i++) {

&#x20;           if (hashSet.contains(arr\[i] + 1)) {

&#x20;               result++;

&#x20;           }

&#x20;       }

&#x20;       return result;

&#x20;   }

}

在这段代码中,我们首先创建了一个 HashSet 用于存储数组中的元素。然后,通过第一个 for 循环将数组元素全部添加到 HashSet 中。之后,利用第二个 for 循环遍历数组,借助 HashSet 的 contains 方法判断每个元素的后继元素是否存在,若存在则增加计数器 result

四、总结

通过这道题,我们看到了合适的数据结构在解决算法问题时的强大作用。HashSet 的快速查找特性使得我们能够高效地完成计数任务。希望大家在日常的算法学习中,不断积累经验,掌握更多巧妙的解题技巧。如果你对这道题有任何疑问,或者有更好的解法,欢迎在评论区留言分享!让我们一起在算法的海洋中畅游,不断提升自己。


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

相关文章:

  • C#-方法(函数)
  • 【 MySQL 学习2】常用命令
  • 计算机网络 (42)远程终端协议TELNET
  • Rust 零大小类型(ZST)
  • 【网络编程】基础知识
  • 【25考研】西南交通大学软件工程复试攻略!
  • 【机器学习实战入门项目】MNIST数字分类机器学习项目
  • 用C++实现一个基于模板的观察者设计模式
  • MySQL的不同SQL模式导致行为不同?
  • 【北京迅为】iTOP-4412全能版使用手册-第七十六章 Qt界面切换
  • Kubernetes(k8s)和Docker Compose本质区别
  • 20.<Spring图书管理系统①(登录+添加图书)>
  • 6.3、OTN 保护
  • Linux 文件权限详解
  • Unity Dots理论学习-3.ECS有关的模块(2)
  • 【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-http版本(30 /100)
  • 阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI
  • matlab函数的主要目的是对包含在 Excel 电子表格中的实验数据进行模型拟合
  • 【k8s面试题2025】3、练气中期
  • 《机器学习》——SVD(奇异分解)降维
  • Go语言的编程范式
  • SpringBoot:RestTemplate与IllegalArgumentException
  • Springboot项目Jackson支持多种接收多种时间格式
  • C语言:-三子棋游戏代码:分支-循环-数组-函数集合
  • 如何利用CodeMeter保护您的物联网设备
  • XXL-JOB 加入 GitCode:推动分布式任务调度进阶发展