给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2
程序员文章站
2024-03-15 20:21:00
...
给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2
使用hash_map,时间复杂度为o(n),空间复杂度为o(n).
Exp:
a{ 2, 3, 1, 4, 5, 6, 7 },target=6;
输出:0 3
2 4
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
public class 乱序数组找下标 {
public static void main(String[] args) {
int[] array={ 2, 3, 1, 4, 5, 6, 7 };
System.out.println(find(array,6));
}
public static List<List<Integer>> find(int[] array,int target){
List<List<Integer>> result=new LinkedList<>();
if(array==null || array.length<1){
return result;
}
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<array.length;i++){
map.put(array[i], i);
}
Arrays.sort(array);
int start=0;
int end=array.length-1;
while(start<end){
int sum=array[start]+array[end];
if(sum==target){
LinkedList<Integer> list=new LinkedList<>();
list.add(map.get(array[start]));
list.add(map.get(array[end]));
result.add(list);
start++;
end--;
}else if(sum<target){
start++;
}else{
end--;
}
}
return result;
}
}
上一篇: JAVA基础学习笔记(二)用来记录这几天的学习历程
下一篇: 7.Java之控制流程语句
推荐阅读
-
给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2
-
算法题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。
-
算法(C++):给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,假设每种输入只会对应一个答案