0
点赞
收藏
分享

微信扫一扫

两数之和返回下标

描述

给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。

(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)

解题思路 :

拿每个数与其之后的数进行相加,若等于目标值target则返回当前两个数

	public int[] twoSum (int[] numbers, int target) {
		
        int[] sum = new int[2];
        for (int i=0;i<numbers.length;i++){
            if (numbers[i] > target) continue;
            for (int j=i+1;j<numbers.length;j++){
                if (numbers[i]+numbers[j] == target){
                    sum[0] = i+1;
                    sum[1] = j+1;
                    return sum;
                }
            }
        }
        return sum;
    }

也可以使用Map来实现,遍历数组,如果没有 (target - 当前值) 就将当前数字存入哈希表,如果有,返回该数字下标+之前已经存进map的值下标

public int[] twoSum(int[] nums, int target) {
	    Map<Integer, Integer> m = new HashMap();
	    for (int i = 0; i < nums.length; i++) {
	        if (m.get(target - nums[i]) != null) {
	            return new int[]{m.get(target - nums[i])+1, i+1};
	        }
	        m.put(nums[i], i);
	    }
	    return new int[]{0, 0};
	}
举报

相关推荐

0 条评论