leetCode解题记录1 - 两数之和(JS,TS,PY版)
2020-03-13 18:31
375 查看
- 作者:陈大鱼头
- 项目地址:ying-leetcode
- 碎碎念:Mmmmm,不定期刷leetcode,会以JS TS PY的形式输出出来
题目描述
给定一个整数数组 nums 和一个目标值 target,
请你在该数组中找出和为目标值的那 两个 整数,
并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。
但是,你不能重复利用这个数组中同样的元素。
给定 nums = [2, 7, 11, 15], target = 9,
因为 nums[0] + nums[1] = 2 + 7 = 9,
所以返回 [0, 1]
解题思路
看到题目第一时间想到的就是冒泡,但是既然是正经刷LeetCode,写个冒泡就有点尴尬了,那么有没有时间复杂度低一点的计算方式呢?想了一下就选择了HASH的方式,思路就是定义一个保存数据的对象,然后循环查询数组,然后要做的一点当然就是将当前循环到的数字当成键,地址当成值,插入对象中,然后计算当前目标结果与当前数字的差,再判断这个差是不是已经在对象里,如果在,就说明这两个就是结果,遂输出,不然就继续循环。
JS版
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ const twoSum = (nums, target) => { const obj = {} for (let i = 0, len = nums.length; i < len; ++i) { const data = nums[i] const res = target - data if (res in obj) { return [obj[res], i] } obj[data] = i } }
TS版
interface objType { [propName: string]: number } /** * @param {number[]} nums * @param {number} target * @return {number[]} */ const twoSum = (nums: number[], target: number): number[] | undefined => { const obj: objType = {} for (let i: number = 0, len: number = nums.length; i < len; ++i) { const data: number = nums[i] const res: number = target - data if (res in obj) { return [obj[res], i] } obj[data] = i } }
PY版
class Solution: """ :type arg1: List[int] :param nums: :type arg2: int :param target: :rtype: (List[int], None) :return: """ def twoSum(self, nums: List[int], target: int) -> (List[int], None): obj = {} for i, data in enumerate(nums): res = target - data if res in obj: return [obj[res], i] obj[data] = i return None
如果你喜欢探讨技术,或者对本仓库有任何的意见或建议,非常欢迎加鱼头微信好友一起探讨,当然,鱼头也非常希望能跟你一起聊生活,聊爱好,谈天说地。 鱼头的微信号是:krisChans95 也可以扫码添加好友,备注“博客”就行
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- LeetCode解题记录(29)——两数相除
- LeetCode解题记录(2)——两数之和
- 【Leetcode解题记录】11. Container With Most Water
- LeetCode解题记录(十五)
- leetcode小白解题记录——第十一题
- LeetCode解题记录(14)——最长公共前缀
- LeetCode解题记录(3)
- Leetcode解题记录
- LeetCode 318. Maximum Product of Word Lengths解题记录
- 2015.03.28 leetcode LRU cache 解题记录
- 2015.03.30 LeetCode Merge Intervals 解题记录
- LeetCode解题记录(十六)
- FCC-js 算法个人解题遇到的问题记录
- LeetCode解题记录(六)
- LeetCode 31 Next Permutation 解题记录
- [LeetCode] Triangle 解题记录
- 【Leetcode解题记录】12. Integer to Roman
- 【Leetcode解题记录】4. Median of Two Sorted Arrays
- LeetCode解题记录(十二)
- [leetcode解题记录]Jump Game和Jump Game II