做网站费用可以看为广告费用吗软件开发项目管理的核心
2026/4/6 6:06:13 网站建设 项目流程
做网站费用可以看为广告费用吗,软件开发项目管理的核心,电子商城网站开发需求分析模板,wordpress 文章访问次数哈希合集1-两数之和2-字母异位词分组3-最长连续序列1-两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案#xff0…哈希合集1-两数之和2-字母异位词分组3-最长连续序列1-两数之和题目描述给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。你可以按任意顺序返回答案。题解var twoSumfunction(nums, target){// 使用哈希表解题 const mapnew Map();// 遍历数组 for(let i0;inums.length;i){// 查找map中是否有target - nums[i]的value值如有返回其key和当前数组元素的下标 if(map.has(target - nums[i])){return[map.get(target-nums[i]),i]}// 未在map的value中找到另一个数将当前数组元素值以及数组索引下标加入map中 map.set(nums[i],i)}// 找不到返回空值return[]};使用Map数据结构来存储每个数字对应的下标● key是数字的值● value的该数字在数组中的位置遍历源数组当前遍历到的数字为nums[i]如果Map中存在以 target - nums[i]为key值的元素说明找到了两个数字加起来等于target的值这时候返回当前索引和 Map中以 target - nums[i]为key值对应的value值即可。2-字母异位词分组题目描述给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]解释● 在 strs 中没有字符串可以通过重新排列来形成 “bat”。● 字符串 “nat” 和 “tan” 是字母异位词因为它们可以重新排列以形成彼此。● 字符串 “ate” “eat” 和 “tea” 是字母异位词因为它们可以重新排列以形成彼此。题解var groupAnagramsfunction(strs){// 使用哈希表解题 const mapnew Map()// 遍历字符数组 for(let s of strs){// 使用split()将字符串分割成单个字符 // 使用sort()将字符数组排序返回字符数组 // 使用join()将排序后的字符数组连接成字符串 // sortS作为哈希表的key值具有唯一性 const sortedSs.split().sort().join()// 当前map中没有此key值将key值存入mapvalue值设为空数组 if(!map.has(sortedS)){map.set(sortedS,[])}// 当前map中有此key值将当前原始字符串存入map的value数组中 map.get(sortedS).push(s)}// map.values()获取map中的所有value // Array.from()转成数组返回returnArray.from(map.values())};时间复杂度O(nmlogm)其中 n 为 strs 的长度m 为 strs[i] 的长度。每个字符串排序需要 O(mlogm)的时间有 n 个字符串所以总的时间复杂度为 O(nmlogm)。 空间复杂度O(nm)。使用哈希表分组将排序后的str[i]作为哈希表的key排序前的str[i]最为哈希表的value3-最长连续序列题目描述给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1输入nums [100,4,200,1,3,2]输出4解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。题解var longestConsecutivefunction(nums){// 使用哈希集合解题只需要存储value无重复、可快速查询的元素集合 constsetnew Set(nums)// 初始化最长连续序列的长度letans0// 遍历哈希集合 for(let s ofset){// 判断集合的当前元素是否是起点[一个序列的「起点 s」一定满足「s-1 」不在set中]if(set.has(s-1)){// 当前元素不是最长连续序列的起点直接跳过continue}// 判断当前元素下一个连续的元素值是否在set中letys 1while(set.has(y)){y}// 更新最长序列的长度 ansMath.max(ans,y-s)// 优化剪枝如果当前最长长度的2倍 ≥ 集合总大小直接终止循环 if(ans *2set.size){break}}returnans};使用哈希集合利用Set()方法将数组转换成哈希集合无序无重复之后遍历哈希集合set不断记录以当前节点为起点的连续序列的长度最后做剪枝优化

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询