JavaScript下的算法基础
前言声明
此篇文章的学习内容来自博主whitsats的算法基础课程。
Hash-两数之和
题目
给定一个整数数组nums
和一个目标值target
,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
1 | 给定 nums = [2, 7, 11, 15], target = 9 |
接替思路
第一种方式:暴力破解
这种方式很简单,挨个遍历寻找合适的即可。这种方式的时间复杂度为。
1 | function twoSum(arr, tar) { |
第二种方式:利用反转键值-数组减少查询时间
将新数组作为 Hash 表来使用,记录原数组值和键的对应关系,然后与外层循环的差值做比较。
1 | var twoSum = function (nums, target) { |
这种方式较为巧妙,大体运行方式:
第一遍循环
将arr数组索引2位置记录为0。其代表当结果为2时,所对应的索引为0。
第二遍循环
将arr数组索引6位置记录为1。其代表当结果为6时,所对应的索引为1。
循环完成
每次进入循环都会进行判断:arr数组的结果索引是否为空,如果不为空,那么值即为索引。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline