欢迎来到新手菜菜——倔强的小叶博客

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

基本要求

示例:

  1. 可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
  2. 可以按任意顺序返回答案在这里插入图片描述

代码实现

由于本人基础可能不是太好,所以参考了一下其他博主的方法,写出了一个最笨的方法,利用数组的遍历,仅供参考!!!
之后研究出更加优质的算法会及时分享滴,希望看到的小可爱们不要嫌弃噢~~~

public  int[] twoSum(int[] nums, int target) {
		int count = 0;  
		int temp = 0;
		int[] array = new int[2];  //有两个元素,用来存储下标
		//由于后面运算过程中,始终是第一个数和数组后面的数进行一一相加,然后与target进行比较
		int[] sums2 = new int[nums.length - 1];  //一个数组中,一个元素不能运用两次
		int[] sums3 = new int[nums.length - 1];	 //一个数组中,一个元素不能运用两次
		//遍历nums数组
		for (int i = 1; i < nums.length; i++) {
			int sum = nums[temp] + nums[i]; //
			sums2[i - 1] = nums[i];   //把原来数组除了0下标正叙放在sum2数组中,防止一个元素被运用两次
			//如果所得sum值等于题目要求的target值时,将下标分别存入array数组中,并返回数组。
			while (sum == target) {
				array[0] = temp;  
				array[1] = i;
				return array;
			}
		}
		count++;   
		//进行递归,重复上面的循环,直至找到对应的数
		sums3 = twoSum(sums2, target);
		for (int j = 0; j < sums3.length; j++) {
			//由于上面定义数组时去掉了第一个数,所以此处重新定义时需要加上
			sums3[j] = sums3[j] + count;
		}
		return sums3;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值