LeetCode(Java版) 1 第一题 两数之和
描述:给定一个整数数组和一个值target,求两个下标i、j,使得a[i] + a[j] = target,返回下标。
package com.jd.leetcodedemo;
import java.util.HashMap;
import java.util.Map;
/**
* LeetCode_1 算法第一题
*
* @author tcx
* @date Feb 11, 2019 3:36:52 PM
*/
public class LeetCode_1 {
/**
* 给定数组得两数相加之和为nums的下标 时间空间O(N)
* @param arr
* @param nums
* @return
*/
public static String getIndexs1(int [] arr,int nums){
String result="";
Map<Integer,Integer> temp=new HashMap<>();
for (int i=0;i<arr.length;i++){
if (temp.containsKey(nums-arr[i])){
return temp.get(nums-arr[i])+","+i;
}else{
temp.put(arr[i],i);
}
}
return result;
}
/**
*
* 给定有序数组得两数相加之和为nums的下标
* @param arr
* @param nums
* @return
*/
public static String getIndexs2(int [] arr,int nums){
String result="";
int start = 0;
int end =arr.length-1;
while(start<end){
//最大数和最小数之和小于所给数
if ((arr[start]+arr[end])<nums){
start++;
}else if((arr[start]+arr[end])>nums){
end--;
}else{
result=start+","+end;
break;
}
}
return result;
}
}