我正在为java做一些编码挑战。在一个挑战中,如果前2个元素或后2个元素中的给定数组具有1后跟3,则返回true。
示例:
unlucky1([1, 3, 4, 5]) → true
unlucky1([2, 1, 3, 4, 5]) → true
unlucky1([1, 1, 1]) → false
因此,我有以下内容:
for(int i=0, j=nums.length-1; i<nums.length-1; i++, j--) {
if((i<3&&nums[i]==1&&nums[i+1]==3)) {
return true;
}
else if(j>3&&nums[j]==3&&nums[j-1]==1) {
return true;
}
}
return false;
我的问题是,有没有更好的方法来设定条件?我不喜欢检查迭代变量是否小于/大于常数的想法。我的代码通过他们所有的测试,但一个,但我觉得它有缺陷/凌乱。我怎样才能有效地检查最后两个&amp;前两个索引有一个1后跟一个3而不检查是j>3
还是i<3
?
它未传递的测试是使用以下数组:[1, 1, 1, 3, 1]
当测试假定为假时,我的代码返回true。
答案 0 :(得分:1)
不要使用根据shmosels评论编辑的任何循环
if (arr[0] == 1 && arr[1] == 3 ||
arr[1] == 1 && arr[2] == 3 ||
arr [arr.length -2] == 1 && arr[arr.length - 1] == 3)
return true;