# 如何用JavaScript实现数组的算法题 数组是JavaScript中最基础且重要的数据结构之一,掌握数组相关算法是前端开发者必备技能。本文将介绍几种常见的数组算法题实现方法。 ## 1. 数组去重 ```javascript // 方法1:使用Set(ES6) function unique(arr) { return [...new Set(arr)]; } // 方法2:使用filter function unique(arr) { return arr.filter((item, index) => arr.indexOf(item) === index); }
// 方法1:使用flat(ES2019) function flatten(arr) { return arr.flat(Infinity); } // 方法2:递归实现 function flatten(arr) { return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flatten(val)) : acc.concat(val), []); }
function twoSum(nums, target) { const map = new Map(); for (let i = 0; i < nums.length; i++) { const complement = target - nums[i]; if (map.has(complement)) { return [map.get(complement), i]; } map.set(nums[i], i); } return []; }
function mergeSortedArrays(arr1, arr2) { let i = 0, j = 0; const result = []; while (i < arr1.length && j < arr2.length) { if (arr1[i] < arr2[j]) { result.push(arr1[i++]); } else { result.push(arr2[j++]); } } return result.concat(arr1.slice(i)).concat(arr2.slice(j)); }
function rotateArray(nums, k) { k = k % nums.length; reverse(nums, 0, nums.length - 1); reverse(nums, 0, k - 1); reverse(nums, k, nums.length - 1); return nums; } function reverse(arr, start, end) { while (start < end) { [arr[start], arr[end]] = [arr[end], arr[start]]; start++; end--; } }
掌握这些基础算法后,可以尝试解决更复杂的题目如: - 三数之和 - 滑动窗口最大值 - 接雨水问题等
通过不断练习LeetCode、Codewars等平台的数组题目,可以显著提升算法能力。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。