前端算法-查找对应元素

简介: 前端算法-查找对应元素

题目

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

输入: nums = [1,2,3,1], k = 3
输出: true

思路一

我们在函数中先判断当前形参是否为null或者形参nums的长度为0,满足其中一个条件直接返回false,如果不满足则继续往下执行,我们声明一个map变量,他的值是一个Map数据结构实例,我们接下来使用循环对形参nums进行循环,在循环中我们用currentNum变量记录当前循环的值,然后使用if语句进行判断,判断条件为使用Map数据的结构的has方法获取currentNum变量值存在于map变量中且i变量-使用get方法在map变量中获取到currentNum变量的属性值小于或等于k,如果满足则返回true,不满足就将当前循环值和i使用Map数据结构的set方法添加到map变量中,如果循环完成没有返回true则直接返回false即可

/** * @param {number[]} nums * @param {number} k * @return {boolean} */varcontainsNearbyDuplicate=function(nums, k) {
if (nums==null||nums.length===0) {
returnfalse    }
letmap=newMap()
for (leti=0; i<nums.length; i++) {
letcurrentNum=nums[i]
if (map.has(currentNum) &&i-map.get(currentNum) <=k) {
returntrue        }
map.set(nums[i], i)
    }
returnfalse};

思路二

这里我们还可以使用双重for循环进行实现,在循环中判断后面的值和前面的值,如果数量是一样的且后面的下标比前面的下标大且后面的下标减去前面的下标是小于等于k那么我们就返回为true,否则就返回false

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
let containsNearbyDuplicate = function(nums, k) {
    for (let i=nums.length-1;i>=0;i--) {
        for (let j = 0 ; j<nums.length;j++){
            if (nums[i]===nums[j]&&j<i&&i-j<=k){
                return true;
            }
        }
    }
    return false
};


相关文章
|
1月前
|
算法
数据结构和算法学习记录——习题-移除链表元素
数据结构和算法学习记录——习题-移除链表元素
16 0
|
2月前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
6天前
|
前端开发
前端 CSS 经典:元素倒影
前端 CSS 经典:元素倒影
9 1
|
17天前
|
存储 算法 Java
Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。
【6月更文挑战第21天】Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。简单哈希表实现未涵盖冲突解决和删除操作。
19 1
|
25天前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
1月前
|
前端开发 算法 JavaScript
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。
|
6天前
|
前端开发
前端 CSS 经典:保持元素宽高比
前端 CSS 经典:保持元素宽高比
12 0
|
6天前
|
缓存 算法 前端开发
前端 JS 经典:LRU 缓存算法
前端 JS 经典:LRU 缓存算法
9 0
|
1月前
|
算法 搜索推荐 Java
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
16 3
|
13天前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素