两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
程序员文章站
2022-07-14 14:35:10
...
import java.util.*;
/**
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
-
所以返回 [0, 1]
/
public class TwoSum {
/*- 解法1
- @param nums
- @param target
- @return
*/
public int[] twoSum(int[] nums, int target) {
int[] tmp=nums.clone();
Arrays.sort(nums);
int i=0;
int j=nums.length-1;
List<Integer> result = new ArrayList<>();
while(i<j){
int sum = nums[i]+nums[j];
if(sum==target){
result.add(nums[i]);
result.add(nums[j]);
break;
}else if(sum<target){i++;}
else if(sum>target){j--;}
}
if(result.size()==0) return null;
int count=0;
int[] result1 = new int[2];
for(int n=0;n<tmp.length;n++){
if(tmp[n]==result.get(0)||tmp[n]==result.get(1)){
result1[count]=n;
count++;
}
if(count==2) break;
}
return result1;
}
/**
- 解法2
- @param nums
- @param target
- @return
*/
public int[] twoSum1(int[] nums, int target) {
Map<Integer,Integer> hash = new HashMap<>();
for(int i=0;i<nums.length;i++){
int num2 = target-nums[i];
if(hash.containsKey(num2)){
return new int[]{hash.get(num2),i};
}else{
if(!hash.containsKey(nums[i])){
hash.put(nums[i],i);
}
}
}
return null;
}
/**
- 解法3
- @param args
*/
public int[] twoSum3(int[] nums, int target) {
for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ return new int[]{i,j}; } } } return null;
}
public static void main(String[] args){
int[] num = {3,3};
int target = 6;
TwoSum solution = new TwoSum();
int[] s = solution.twoSum1(num,target);
System.out.print("["+s[0]+","+s[1]+"]");
}
}
上一篇: ORACLE 添加、删除、修改字段
下一篇: c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
推荐阅读
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。
-
算法(C++):给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,假设每种输入只会对应一个答案
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数 - python实现
-
python练习题---给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。