如果数组中至少有1个和3个,那么这个Java代码假设返回true。这就是我所拥有的但是它不起作用:
public boolean find13(int[] nums) {
boolean array = true;
for(int i = 0; i < nums.length; i++) {
if(nums[i] == 1 && nums[i] == 3){
}
else{
array = false;
}
}
return array;
}
答案 0 :(得分:2)
Bitmap b = createBitmap(BitmapFactory.decodeResource(NinePatchImage), x, y, width, height);
答案 1 :(得分:1)
如果您对Java 8流感兴趣。试试这个单行:
public static void main(String[] args) throws Exception {
System.out.println(find1_3(new int[]{1, 2, 3, 4}));
System.out.println(find1_3(new int[]{1, 2, 4}));
System.out.println(find1_3(new int[]{2, 3, 4}));
}
public static boolean find1_3(int[] nums) {
return Arrays.stream(nums).filter(n -> n == 1 || n == 3).distinct().count() == 2;
}
它过滤掉除1和3之外的所有数字,然后筛选出distinct()
过滤器的结果。如果您的计数为2则为1&amp; 3在数组中,否则为false。
结果:
true
false
false
不想复制@Cruentus_Nex答案(+1给你)所以这里有一个不使用旗帜的变体
public static void main(String[] args) throws Exception {
System.out.println(find1_3(new int[] {1, 2, 3, 4}));
System.out.println(find1_3(new int[] {1, 2, 4}));
System.out.println(find1_3(new int[] {2, 3, 4}));
}
public static boolean find1_3(int[] num) {
for (int i = 0; i < num.length; i++) {
if (num[i] == 1 || num[i] == 3) {
// Found first match
int first = num[i];
// Search for the next
for (int j = i + 1; j < num.length; j++) {
if (num[j] != first && (num[j] == 1 || num[j] == 3)) {
// Found second match
return true;
}
}
// Didn't find second match
return false;
}
}
// Didn't find first match
return false;
}
结果:
true
false
false
答案 2 :(得分:0)
定义两个布尔值。当你遇到3时,将其中一个设置为true
;当1时,将另一个设置为true
。
如果两个布尔值均为true
(true
),则返回return one && three;
。
答案 3 :(得分:0)
更优雅的方式,
boolean find13(int[] nums){
boolean[] results = new boolean[]{false, false};
for(int n : nums){
if(!results[0] && n == 1){
results[0] = true;
} else if(!results[1] && n == 3){
results[1] = true;
} else if(results[0] && results[1]){
return true;
}
}
return false;
}
答案 4 :(得分:0)
较短的解决方案使用java.util.List的contains函数。示例实现如下:
public boolean find13(int nums[])
{
List<Integer> list = Arrays.asList(nums);
return list.contains(1) && list.contains(3);
}
这个解决方案比自己检查每个值更简洁,但如果你有一个非常大的数组可能不是最快的,因为它必须首先将数组转换为列表然后搜索值。
答案 5 :(得分:0)
此代码可以正常工作:-
public boolean lucky13(int[] nums) {
for(int i=0;i<=nums.length-1;i++){
if((nums[i]==1)||(nums[i]==3)){
return false;
}
}
return true;
}
答案 6 :(得分:0)
我的解决方案:
public boolean lucky13(int[] nums) {
int count1 = 0;
int count3 = 0;
for (int num : nums) {
if (num == 1)
count1++;
if (num == 3)
count3++;}
return count1 == 0 && count3 == 0;}