プロンプト: int の配列が与えられた場合、配列に 2 の隣に 2 が含まれている場合、または 4 の隣に 4 が含まれているが、両方が含まれていない場合は true を返します。
Arrays のみで List メソッドを使用せずにこれを実行しましたが、練習のためにこの方法で実行したいと思います。これが私が持っているものです.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
更新: 問題の一部は、Integer の代わりに int を使用していました。新しいコード:
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);
}