所以,基本上,这些问题要求我找出数组中数字的总和。除了数字'13‘是非常不吉利的,所以它不计算'13’和紧跟在'13‘后面的数字。
这是我所做的:
public int sum13(int[] nums) {
  int d = 0;
  int sum = 0;
  for (int i=0;i<nums.length;i++){
    if(nums[i] == 13){
    d = i;
    break;
    }
    else{
    d = nums.length;
    }
  }
  for(int i=0;i<d;i++){
   sum = sum + nums[i];
  }
  return sum;
}即使我通过了大多数测试,我仍然不能理解如何从和中排除13旁边的数字。
例如,→6通过了sum13({1,2,2,1,13})!sum13({13,1,13})→0通过!但是,sum13({ 13,1,2,13})→3返回0,因为它在13的第一个实例停止。
发布于 2013-04-03 21:13:38
为什么要使用两个循环?如果数字为13,则不要将其或下一个数字添加到总和中,如下所示:
public int sum13(int[] nums) {
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] == 13) {
            i++;
        } else {
            sum = sum + nums[i];
        }
    }
    return sum;
}发布于 2013-04-03 21:14:03
根据你的问题,如果数字是13 &它的直接后继者,则不包括在内。因此,当您发现13再次递增循环计数器时:
 for(int i=0;i<nums.length;i++){
   if(nums[i] == 13) {
     i++;
    }
   else {
     sum = sum + nums[i];
   }
  }如果数组中有一个元素,这自然会跳过13的下一个元素。
发布于 2013-04-03 21:13:54
直接在第一个for循环中求和如何?更短、更容易、更快的方式:)
public int sum13(int[] nums) {
  int sum = 0;
  for (int i=0;i<nums.length;i++){
    if (nums[i] != 13) {
      sum += nums[i];
    } else {
      i++;
    }
  }
  return sum;
}https://stackoverflow.com/questions/15788224
复制相似问题