N61 两数之和

描述

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum需要返回这两个数字的下标(index1,index2),需要满足index1小于index2

输入描述:

数组为{20, 70, 110, 150},目标值为90

输出描述:

index1=1, index2=2

示例1

输入:

20,70,110,150

90

输出:

1,2

代码

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {

        int[] arr = {3, 2, 4}; //定义数组
        int tar = 6; // 目标值

        int[] TwoSum = twoSum(arr, tar); // 调用方法

        // 遍历输出
        for (int i = 0; i < TwoSum.length; i++) {
            System.out.print(TwoSum[i]);
            if(i < TwoSum.length - 1){
                System.out.print(",");
            }
        }

    }

    // twoSun方法
    public static int[] twoSum(int[] numbers, int target) {
        int[] arr = new int[2];
        if (numbers.length <= 0)
            return arr;
        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = 0; j < numbers.length; j++) {
                if (numbers[i] + numbers[j] == target) {
                    arr[0] = i + 1;
                    arr[1] = j + 1;
                }
            }
        }
        return arr;
    }
}
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //System.out.println("请输入数组元素,用逗号分隔:");
        String[] inputArray = scanner.nextLine().split(",");
        //System.out.println("请输入目标值:");
        int target = scanner.nextInt();
        scanner.close();

        int[] arr = new int[inputArray.length];
        for (int i = 0; i < inputArray.length; i++) {
            arr[i] = Integer.parseInt(inputArray[i].trim());
        }

        List<Integer> twoSum = twoSum(arr, target);

        // 遍历输出
        for (int i = 0; i < twoSum.size(); i++) {
            System.out.print(twoSum.get(i));
            if (i < twoSum.size() - 1) {
                System.out.print(",");
            }
        }
    }

    // twoSum方法
    public static List<Integer> twoSum(int[] numbers, int target) {
        List<Integer> result = new ArrayList<>();
        for (int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[i] + numbers[j] == target) {
                    result.add(i + 1);
                    result.add(j + 1);
                    break; // 找到一对就返回
                }
            }
        }
        return result;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务