gpt4 book ai didi

java - 如何使用 Arrays.asList() 对数组执行 List 函数

转载 作者:行者123 更新时间:2023-12-04 02:28:11 25 4
gpt4 key购买 nike

提示:给定一个整数数组,如果该数组包含 2 旁边的 2 或 4 旁边的 4,但不是两者都包含,则返回 true。

我只使用数组而不使用列表方法来完成此操作,但我想以这种方式进行练习。这就是我所拥有的,Arrays.asList() 让我有些悲伤。

public boolean either24(int[] nums) 
{
List list = Arrays.asList(nums);
boolean twos = list.containsAll(Arrays.asList(2, 2));
boolean fours = list.containsAll(Arrays.asList(4, 4));
return (twos || fours) && !(twos && fours);
}
Expected Run
either24({1, 2, 2}) → true true OK
either24({4, 4, 1}) → true true OK
either24({4, 4, 1, 2, 2}) → false false OK
either24({1, 2, 3, 4}) → false false OK
either24({3, 5, 9}) → false false OK
either24({1, 2, 3, 4, 4}) → true false X
either24({2, 2, 3, 4}) → true false X
either24({1, 2, 3, 2, 2, 4}) → true false X
either24({1, 2, 3, 2, 2, 4, 4}) → false false OK
either24({1, 2}) → false true X
either24({2, 2}) → true true OK
either24({4, 4}) → true true OK
either24({2}) → false true X
either24({}) → false false OK

更新:部分问题是使用 int 而不是 Integer。新代码:

public boolean either24(int[] nums) 
{
Integer[] nums2 = new Integer[nums.length];
for(int i = 0; i < nums.length; i++)
nums2[i] = nums[i];
List list = Arrays.asList(nums2);
boolean twos = list.containsAll(Arrays.asList(2, 2));
boolean fours = list.containsAll(Arrays.asList(4, 4));
return (twos || fours) && !(twos && fours);
}

最佳答案

containsAll() 不检查两个元素是否相邻。它只检查元素是否存在于列表中。您需要遍历数组并检查相邻元素

        int [] nums = new int [] {1,2,3,4,2,3,2,2,1,-4,4,4};
int len = nums.length;
for (int i = 0; i < len - 1 ; i++)
{
if((nums[i] == nums[i+1]) && (nums[i] == 2 || nums[i] == 4))
{
System.out.println("Yes");
}
}

上面的代码片段并没有给你答案。您仍然需要处理问题的 但不是两个 部分,我将留给您。

关于java - 如何使用 Arrays.asList() 对数组执行 List 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com