首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组中整数的总和

数组中整数的总和
EN

Stack Overflow用户
提问于 2013-04-03 21:08:15
回答 9查看 1.8K关注 0票数 0

所以,基本上,这些问题要求我找出数组中数字的总和。除了数字'13‘是非常不吉利的,所以它不计算'13’和紧跟在'13‘后面的数字。

这是我所做的:

代码语言:javascript
运行
复制
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的第一个实例停止。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-04-03 21:13:38

为什么要使用两个循环?如果数字为13,则不要将其或下一个数字添加到总和中,如下所示:

代码语言:javascript
运行
复制
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;
}
票数 6
EN

Stack Overflow用户

发布于 2013-04-03 21:14:03

根据你的问题,如果数字是13 &它的直接后继者,则不包括在内。因此,当您发现13再次递增循环计数器时:

代码语言:javascript
运行
复制
 for(int i=0;i<nums.length;i++){
   if(nums[i] == 13) {
     i++;
    }
   else {
     sum = sum + nums[i];
   }
  }

如果数组中有一个元素,这自然会跳过13的下一个元素。

票数 4
EN

Stack Overflow用户

发布于 2013-04-03 21:13:54

直接在第一个for循环中求和如何?更短、更容易、更快的方式:)

代码语言:javascript
运行
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15788224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档