Java CodingBat exercise:如果给定数组的前2个或最后2个位置包含不吉利的1,则返回true
我们会说数组中紧接着1和3的是“不吉利的”1。如果给定数组的前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
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;
}