建设部标准规范网站,专业的网页设计服务,wordpress站点迁移,湖南软件开发公司题目
输入一个递增排序的数组和一个数字s#xff0c;在数组中查找两个数#xff0c;使得它们的和正好是s。如果有多对数字的和等于s#xff0c;则输出任意一对即可。
示例 1#xff1a;
输入#xff1a;nums [2,7,11,15], target 9
输出#xff1a;[2,7] 或者 [7,2]…题目
输入一个递增排序的数组和一个数字s在数组中查找两个数使得它们的和正好是s。如果有多对数字的和等于s则输出任意一对即可。
示例 1
输入nums [2,7,11,15], target 9
输出[2,7] 或者 [7,2]示例 2
输入nums [10,26,30,31,47,60], target 40
输出[10,30] 或者 [30,10]限制
1 nums.length 10^51 nums[i] 10^6 解答
源代码
class Solution {public int[] twoSum(int[] nums, int target) {SetInteger hashSet new HashSet();for (int num : nums) {if (hashSet.contains(target - num)) {return new int[]{target - num, num};}hashSet.add(num);}return new int[2];}
}
总结
经典两数之和题边遍历数组边把元素放入哈希表中对每个元素都寻找 s 和它的差是否在哈希表中如果存在则代表这两个数之和为 s 。
PS.虽然但是代码里的方法参数是 target 不是 s 诶……