首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成对编程挑战-免费代码营

成对编程挑战-免费代码营
EN

Code Review用户
提问于 2016-07-09 17:25:46
回答 1查看 254关注 0票数 4

挑战:

给定数组arr,查找其和等于第二个参数arg的元素对,并返回其索引的和。

如果具有相同数值元素但可能有不同索引的多对,则返回最小的索引和。一旦使用了一个元素,它就不能被重用来与另一个元素配对。

例如,pairwise([7, 9, 11, 13, 15], 20)返回6

我的代码(工作,通过所有验证)如下:

代码语言:javascript
复制
function pairwise(list, sum) {
  // noprotect
  var innerCounter,
      outerCounter,
      used = {},
      returnValue = 0;
  for( outerCounter = 0 ; outerCounter < list.length-1 ; outerCounter++){
    if( used[outerCounter] )
      continue;
    for( innerCounter = outerCounter+1 ; innerCounter < list.length ; innerCounter++){
      if( used[innerCounter] )
        continue;      
      if( list[innerCounter] + list[outerCounter] == sum ){
        used[innerCounter] = true;
        returnValue = returnValue + innerCounter + outerCounter;
        break;
      } 
    }
  }

  return returnValue;
}

我对sum作为参数名进行了一些内部辩论,因为我们还返回了一个sum。但是我坚持使用returnValue作为返回值,sum作为参数。从样式到算法,任何关于这方面的反馈都是受欢迎的。

EN

回答 1

Code Review用户

发布于 2016-07-10 00:25:25

我唯一的评论将是风格,所以可能更多的是一个意见问题。欢迎任何反对意见。

白色空间

您的所有代码都是捆绑在一起的,并且不像可能的那样容易阅读。

单语句(如果大括号为

)

在if和其他块上始终使用大括号通常是有益和一致的,即使只有一条语句。如果您稍后回到代码并注释/添加行,那么很容易引入不受欢迎的功能。

代码语言:javascript
复制
if(someValue)
    //doThis();
alwaysDoThis();

速记算术

代码语言:javascript
复制
returnValue = returnValue + innerCounter + outerCounter;

可以缩短为

代码语言:javascript
复制
returnValue += innerCounter + outerCounter;
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/134380

复制
相关文章

相似问题

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