给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

如题:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。


示例 :
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]

分析

首先要考虑数组的问题,因为不知道要输入多少个数字,所以数组是行不通的,所以要用到集合。定义集合输入0退出,然问题就简单了,剩下的就是循环和比较的问题了

废话不多说,上代码

代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author YANGXIN
 */
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 输入
        // 定义集合
        List<Integer> list = new ArrayList<Integer>();
        System.out.println("请输入数组!输入(0)退出!");
        int count = 0;
        while (true){
            System.out.print("第" + count + "个值:");
            int num = sc.nextInt();
            if(num == 0){
                break; // 输入0退出
            }
            list.add(num); // 存入到集合中
            count ++;
        }

        // 集合中有内容才开始下一步操作
        if(list.size() > 0) {
            System.out.print("请输入目标值:");
            int target = sc.nextInt(); // 输入目标值
            int first = 0; // 初始化定义第一个下标
            int second = 0; // 初始化定义第二个下标
            boolean flag = false; // 初始化条件
            for (int i = 0; i < list.size(); i++) {
                // 第一个值
                for (int j = i + 1; j < list.size(); j++) {
                    // 第二个值
                    flag = (list.get(i) + list.get(j)) == target;
                    if(flag){
                        first = i; // 满足条件
                        second = j;
                        break;
                    }
                }
                if(flag) break; // 如果提前找到了就结束循环
            }
            // 判断条件 如果都为0 说明没有满足的条件
            if(first == 0 && second ==0) {
                System.out.println("没有满足的目标...");
            }else{
                System.out.println("满足的值下标:[" + first + "," + second + "]");
            }

        }else{
            System.out.println("未输入!");
        }

    }
}

运行结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

好的,再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值