欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

力扣专题刷题-模拟:两数之和

时间:2023-07-07
两数之和

题目描述思路

暴力枚举

Python实现Java实现 哈希表

Python实现Java实现


题目描述

两数之和


思路 暴力枚举

最简单的想法就是枚举数组中的每个数字,计算target-x是否存在于数组中,不存在则继续往下枚举,存在返回当前数字下标和target-x的下标即可。

Python实现

# 暴力枚举class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: n = len(nums) for i in range(n): for j in range(i+1, n): if nums[i] + nums[j] == target: return [i ,j] return []

Java实现

class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { if (nums[i] + nums[j] == target) { return new int[]{i, j}; } } } return new int[0]; }}

哈希表

是用哈希表,对于每个x,首先查询哈希表中是否存在target-x,然后将x插入到哈希表中,即可保证不会让x和自己匹配。

Python实现

# 哈希表class Solution: def twoSum(self, nums:List[int], target: int) -> List[int]: map = dict() for i, num in enumerate(nums): if target - num in map: return [map[target-num], i] map[num] = i return []

Java实现

class Solution { public int[] twoSum(int[] nums, int target) { Map map = new HashMap<>(); for (int i = 0; i < nums.length; ++i) { if (map.containsKey(target - nums[i])) { return new int[]{map.get(target-nums[i]), i}; } map.put(nums[i], i); } return new int[0]; }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。