欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > LeetCode 1426 题:数元素解题全解析

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

2025/2/23 6:53:34 来源:https://blog.csdn.net/temp0504/article/details/145210359  浏览:    关键词: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 的快速查找特性使得我们能够高效地完成计数任务。希望大家在日常的算法学习中,不断积累经验,掌握更多巧妙的解题技巧。如果你对这道题有任何疑问,或者有更好的解法,欢迎在评论区留言分享!让我们一起在算法的海洋中畅游,不断提升自己。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词