迈向7级的第五个脚印
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

Description:

Fellow code warrior, we need your help! We seem to have lost one of our array elements, and we need your help to retrieve it! Our array, superImportantArray, was supposed to contain all of the integers from 0 to 9 (in no particular order), but one of them seems to be missing.

Write a function called getMissingElement that accepts an array of unique integers between 0 and 9 (inclusive), and returns the missing element.

Examples:

getMissingElement( [0, 5, 1, 3, 2, 9, 7, 6, 4] ) // returns 8
getMissingElement( [9, 2, 4, 5, 7, 0, 8, 6, 1] ) // returns 3

菜鸟出招

function getMissingElement(superImportantArray){
  //TODO
  var a = 45;
  for (var i in superImportantArray) {
    a -= superImportantArray[i];
  }
  return a;
}

菜鸟思维

其实我一开始是这样想的:

  1. 将数组进行排序
  2. 与[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中每个元素逐个对比

一时竟忘了排序算法怎么做的,就没有用菜鸟思维做出来。

突然想到,这10个数的和加起来不是45么,少一个的话,嘻嘻。

偷师学艺

function getMissingElement(superImportantArray){
  return 45 - superImportantArray.reduce(function(a,b){ return a+b;});
}

关键字积累

  • reduce

菜鸟反思

经过这几天不间断地努力,我的思维终于命中大神了。

但是我突然非常怀念还是菜鸟时的斤斤计较了,谁能用不走后门的方法,而又最高效的算法,来帮我实现这个小题目呢。

评论
发表评论
暂无评论
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏