繁体   English   中英

找不到针对编码蝙蝠阵列挑战的解决方案

[英]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;

}

因为这是编码方面的挑战,所以我不会回答代码,而是您应该采用的方法:

  • 声明另一个数组
  • 开始逐个元素迭代第一个数组
  • 如果元素为4,则跳出循环
  • 如果元素不是4,则将其添加到另一个数组中

最后,第二个数组应该具有第一个数组之前的所有元素。

我对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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM