因为可能存在多组这样的下标,使用StringBuffer
/**
* Created by KingsLanding on 2022/9/3 22:40
*/
public class testLeetcode {
//给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。
public StringBuffer test(int[] num, int sum){
HashMap<Integer, Integer> map = new HashMap<>();
StringBuffer stringBuffer = new StringBuffer();
for (int i=0;i<num.length;i++){
//将所有数字的值作为key,下标作为value放到map中
map.put(num[i],i);
//分析:目标和-数字要等于数组中的除自身的另一个数字(这个数字也在map集合中)
int sub=sum-num[i];
//判断map中是否存在sub这个数字且确定是两个不同位置的数
if (map.containsKey(sub)&&map.get(sub)!=i){
//输出这两个数字的下标。
//使用StringBuffer存储返回值
stringBuffer.append(i+"和"+map.get(sub)+"\n");
}
}
return stringBuffer;
}
@Test
public void testTest(){
StringBuffer test = test(new int[]{3, 4, 5, 6}, 9);
System.out.println(test);
}
}