编程技术分享平台

网站首页 > 技术教程 正文

java算法题-和为s的两个数字(计算两个数的和java)

xnh888 2024-11-12 13:44:13 技术教程 25 ℃ 0 评论

在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:

输入一个递增排序的数组和一个数字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^5
  • 1 <= nums[i] <= 10^6

这样的题你会怎么用java实现呢?

分享一下我的解题思路:

public int[] twoSum(int[] nums, int target) {
	int[] result=new int[2];
	Map<Integer,Integer> map=new HashMap<>();
	for (int i=0;i<nums.length;i++){
		if(nums[i]>=target){
			break;
		} else{
			int key=target-nums[i];
			if(map.get(key)!=null){
				result[0]=nums[i];
				result[1]=nums[map.get(key)];
				return result;
			}
			map.put(nums[i],i);
		}
	}
	for (int i=0;i<nums.length;i++){
		int key=target-nums[i];
		if(map.get(key)!=null){
			result[0]=nums[i];
			result[1]=nums[map.get(key)];
			break;
		}
	}
	return result;
}

结果:

输入:[2,7,11,15] 9
输出:[2,7]

leetcode上对该答案的分析如下:

36 / 36 个通过测试用例

状态:通过

执行用时: 54 ms

内存消耗: 57.7 MB

执行用时分布图表


执行消耗内存分布图表


大家有更好的解题思路吗?欢迎在评论区作答哈~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表