[英]Can't find solution to codingbat array challenge
我一直在研究Java的codingbat问题,并且遇到了array-2中的一个问题,我无法仅使用一个循环来解决它。 问题如下:
给定一个非空的int数组,返回一个新数组,其中包含原始数组中位于原始数组中前4个元素之前的元素。 原始数组将至少包含一个4。请注意,在Java中创建长度为0的数组是有效的。
我看了其他解决方案,但它们都使用两个循环,而Array-2问题集应仅使用一个循环来完成。 我不确定如何解决这个问题,这是我的解决方案,有两个循环:
public int[] pre4(int[] nums) {
int[] notnums = new int[0];
for(int i = 0; i<nums.length;i++)
if(nums[i]==4){
notnums = new int[i];
for(int j = 0;j<i;j++)
notnums[j] = nums[j];
return notnums;
}
return notnums;
}
因为这是编码方面的挑战,所以我不会回答代码,而是您应该采用的方法:
最后,第二个数组应该具有第一个数组之前的所有元素。
我对1个循环的解决方案:
public int[] pre4(int[] nums) {
int[] res = new int[0];
for(int i = nums.length - 1; i >= 0; i--){
if (nums[i] == 4)
res = new int[i];
else
if (res.length > 0)
res[i] = nums[i];
}
return res;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.