Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CodingBat exercise:如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true_Java_Arrays - Fatal编程技术网

Java CodingBat exercise:如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true

Java CodingBat exercise:如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true,java,arrays,Java,Arrays,我们会说数组中紧接着1和3的是“不吉利的”1。如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true 练习可以在这里找到: 我自己的方法是这样的: public boolean unlucky1(int[] nums) { for (int i = 0; i < nums.length-1; i++) { if (nums[i] == 1 && nums[i+1] == 3) return true; } return fals

我们会说数组中紧接着1和3的是“不吉利的”1。如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true

练习可以在这里找到:

我自己的方法是这样的:

public boolean unlucky1(int[] nums) {

  for (int i = 0; i < nums.length-1; i++) {
    if (nums[i] == 1 && nums[i+1] == 3)
      return true;
  }
  return false;
}
public boolean unlucky1(int[]nums){
对于(int i=0;i

这适用于除[1,1,1,3,1]之外的所有数组。现在我明白了为什么它不适用于这个数组,但为什么它适用于[2,1,3,4,5]?此数组的前两个或最后一个位置也没有1后跟3。我做错这个练习了吗?

看起来你没有遵守规则。您不需要迭代整个数组。您应该只测试前两个和最后两个元素

编辑:

再次阅读练习,即使1后面跟3在数组的索引1和索引2中,似乎也应该返回true(因为要求倒霉的1要么在前两个位置,要么在后两个位置-3不必在前两个位置)

问题的定义是

1在前2个或最后2个位置

X
标记位置是可以定位不幸1的位置

[2,1,,3,…,4,5]

[X,X,…,X,X]

不幸的1位于前两个元素中。

例如:

if(nums.length<2){
            return false;
        }
        for (int i = 0; i<2;i++) {
            if(nums[i]==1&&nums[i+1]==3){
                return true;
            }
        }
        for (int i = nums.length-1; i>nums.length-2;i--) {
            if(nums[i-1]==1&&nums[i]==3){
                return true;
            }
        }
        return false;

if(nums.length我正试图用尽可能少的代码行来解决那些编码问题。让我用三元运算符来分享我对这个问题的解决方案

public boolean unlucky1(int[] nums) {
      return nums.length <= 1 ? false : (nums.length == 2 && nums[0] == 1 && nums[1] == 3) ? true 
              : (nums[0] == 1 && nums[1] ==3) ? true : (nums[1] == 1 && nums[2] ==3) 
                      ? true : (nums[nums.length-2] == 1 && nums[nums.length-1] ==3);
}
public boolean unlucky1(int[]nums){
return nums.length此代码工作正常:-

public boolean unlucky1(int[] nums) {
  int length=nums.length;
  if(nums.length==0||nums.length==1){
    return false;
  }
 else if((nums[0]==1&&nums[1]==3)||(nums[1] ==1 && nums[2] ==3)||(nums[length-1]==3)&&nums[length-2]==1){
    return true;
  }
  return false;
}

如果您添加了一些上下文来解释为什么这样做以及OP的代码不起作用,这个答案可能会有所改进。而且,在我看来,OP更希望对他的代码进行解释,而不是(仅仅)一个解决方案
public boolean unlucky1(int[] nums) {
  if(nums.length>1){
if(nums[0]==1 && nums[1]==3) return true;
if(nums[1]==1 && nums[2]==3) return true;
if(nums[nums.length-2]==1 && nums[nums.length-1]==3) return true;


 }
 return false;
}
public boolean unlucky1(int[] nums) {
      return nums.length <= 1 ? false : (nums.length == 2 && nums[0] == 1 && nums[1] == 3) ? true 
              : (nums[0] == 1 && nums[1] ==3) ? true : (nums[1] == 1 && nums[2] ==3) 
                      ? true : (nums[nums.length-2] == 1 && nums[nums.length-1] ==3);
}
public boolean unlucky1(int[] nums) {
  int length=nums.length;
  if(nums.length==0||nums.length==1){
    return false;
  }
 else if((nums[0]==1&&nums[1]==3)||(nums[1] ==1 && nums[2] ==3)||(nums[length-1]==3)&&nums[length-2]==1){
    return true;
  }
  return false;
}