整型数组 判断 java,给定一个整数数组,判断其中是否有3个数和为N
借助集合將復雜度降到n2,但耗時還是比較長。 import?java.util.HashMap;
import?java.util.HashSet;
import?java.util.Scanner;
/**
*?@Author:?coderjjp
*?@Date:?2020-05-07?8:40
*?@Description:給定一個整數數組,判斷其中是否有3個數和為N
*?@version:?1.0
*/
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
String?ss[]?=?sc.nextLine().split(",");
int?N?=?Integer.valueOf(ss[1]);
String[]?s?=?ss[0].split("?");
int?arr[]?=?new?int[s.length];
for?(int?i?=?0;?i?
arr[i]?=?Integer.valueOf(s[i]);
HashSet?set?=?new?HashSet<>();
for?(int?i?=?0;?i
int?target?=?N?-?arr[i];
for?(int?j?=?0;?j?
if?(j?==?i)?continue;
if?(set.contains(target?-?arr[j])){
System.out.println("True");
return;
}
set.add(arr[j]);
}
set.clear();
}
System.out.println("False");
}
}
比較好的方法是先排序,同樣把三數和問題轉化為兩數和問題。
import?java.util.Arrays;
import?java.util.Scanner;
/**
*?@Author:?coderjjp
*?@Date:?2020-05-07?11:56
*?@Description:
*?@version:?1.0
*/
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
String?ss[]?=?sc.nextLine().split(",");
int?N?=?Integer.valueOf(ss[1]);
String[]?s?=?ss[0].split("?");
int?arr[]?=?new?int[s.length];
for?(int?i?=?0;?i?
arr[i]?=?Integer.valueOf(s[i]);
Arrays.sort(arr);
int?target,?l,?r;
for?(int?i?=?0;?i?
target?=?N?-arr[i];
l?=?i?+?1;
r?=?s.length?-?1;
while?(l?
if?(arr[l]?+?arr[r]?==?target){
System.out.println("True");
return;
}else?if?(arr[l]?+?arr[r]?>?target)
r--;
else
l++;
}
}
System.out.println("False");
}
}
總結
以上是生活随笔為你收集整理的整型数组 判断 java,给定一个整数数组,判断其中是否有3个数和为N的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10自带Microsoft Edg
- 下一篇: ftp限流java,FTP流量限制的方法