题目

队友该卖就卖,千万别舍不得。

当你的队伍被敌人包围时,你选择拯救谁、抛弃谁非常重要,如果选择错误就会造成团灭。

如果是AD或AP,优先拯救。

因为AD和AP是队伍输出的核心。

其次应该拯救打野。

因为打野死了对面就可以无所顾虑地打龙。

最后才是辅助或上单。

因为辅助和上单都是肉,死了也不会对团队造成毁灭性影响,该卖就卖。

但真实中的团战远比这要复杂,你的队伍很可能会被敌人分割成2个或3个部分。

当你救了一个重要的人时,很可能其他队友也会因此获救。

举个例子:

辅助和AD经常是在一起的,打野和中单在一起,上单经常一个人。

你救了AD,辅助也经常因此获救。

让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。

第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。

最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。

提示

Arguments object

Array.shift()

Array.slice()

测试用例

  • drop([1, 2, 3, 4], function(n) {return n >= 3;}) 应该返回 [3, 4]。
  • drop([0, 1, 0, 1], function(n) {return n === 1;}) 应该返回 [1, 0, 1]。
  • drop([1, 2, 3], function(n) {return n > 0;}) 应该返回 [1, 2, 3]。
  • drop([1, 2, 3, 4], function(n) {return n > 5;}) 应该返回 []。
  • drop([1, 2, 3, 7, 4], function(n) {return n > 3;}) 应该返回 [7, 4]。
  • drop([1, 2, 3, 9, 2], function(n) {return n > 2;}) 应该返回 [3, 9, 2]。

分析思路

while() 循环,当 func(arr[0]) 不被满足时移除arr首项。然后继续遍历数组剩余部分。

要注意的是,当 func(arr[0]) 一直不被满足时,arr首项将被无限多(浏览器最大值边界)次移除,即使arr为空数组也会循环此操作。为了保证效率,应加上限制条件 arr.length 阻止无限循环的发生。

代码

function drop(arr, func) {
// Drop them elements.
while(!func(arr[0]) && arr.length) {
arr.shift();
} return arr;
} drop([1, 2, 3], function(n) {return n < 3; });

[Intermediate Algorithm] - Drop it的更多相关文章

  1. [Intermediate Algorithm] - Arguments Optional

    题目 创建一个计算两个参数之和的 function.如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果. 例如,add(2, 3) 应该返回 5,而 ...

  2. [Intermediate Algorithm] - Everything Be True

    题目 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返回ture.反之,返回false ...

  3. [Intermediate Algorithm] - Steamroller

    题目 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. 提示 Array.isArray() 测试用例 steamroller([[["a"]], [["b&qu ...

  4. [Intermediate Algorithm] - Finders Keepers

    题目 写一个 function,它浏览数组(第一个参数)并返回数组中第一个通过某种方法(第二个参数)验证的元素. 提示 Array.filter() 测试用例 find([1, 3, 5, 8, 9, ...

  5. [Intermediate Algorithm] - Binary Agents

    题目 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 提示 String.charCodeAt() String.fromCharCode() 测试用例 binaryAgent ...

  6. [Intermediate Algorithm] - Smallest Common Multiple

    题目 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 范围是两个数字构成的数组,两个数字不一定按数字顺序排序. 例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小 ...

  7. [Intermediate Algorithm] - Sum All Primes

    题目 求小于等于给定数值的质数之和. 只有 1 和它本身两个约数的数叫质数.例如,2 是质数,因为它只能被 1 和 2 整除.1 不是质数,因为它只能被自身整除. 给定的数不一定是质数. 提示 For ...

  8. [Intermediate Algorithm] - Sum All Odd Fibonacci Numbers

    题目 给一个正整数num,返回小于或等于num的斐波纳契奇数之和. 斐波纳契数列中的前几个数字是 1.1.2.3.5 和 8,随后的每一个数字都是前两个数字之和. 例如,sumFibs(4)应该返回 ...

  9. [Intermediate Algorithm] - Spinal Tap Case

    题目 将字符串转换为 spinal case.Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词. 提示 ...

随机推荐

  1. 球的序列(formation.*)

      N个编号为1-n的球,每个球都有唯一的编号.这些球被排成两种序列,分别为A.B序列,现在需要重新寻找一个球的序列l,对于这个子序列l中任意的两个球,要求j,k(j<k),都要求满足lj在A中 ...

  2. sql server 学习课件 PPT

    http://www.cnblogs.com/woodytu/p/4465288.html

  3. not in 和 <> 不走索引

    首先我们要知道的一点就是CBO的代码oracle是不会对我们公开的,起码现在是.所以本文中的结论不一定适用所有的版本.在应用本文的结论之前最好先试一下. ok 下面就是本文的结论,当你在where语句 ...

  4. Openfire:XMPP的几种消息类型

    XMPP 有以下几种消息类型: l   Normal l   Chat l   Groupchat l   Headline l   Error 根据官方文档(http://www.igniterea ...

  5. maven打包需要设置main-class的插件写法

    maven打包需要设置main-class的插件写法 <build> <plugins> <plugin> <groupId>org.apache.ma ...

  6. 用户向导左右滑动页面实现之ViewPager

    接着上一篇博客.上一篇博客是用ImageSwitcher实现用户向导功能,如今用ViewPager实现同样的功能. 直接看代码: 布局文件activity_main.xml <RelativeL ...

  7. 使用golang来设计我们的Ubuntu Scope

    我们知道golang越来越被非常多的开发人员来开发应用.go语言也能够用于开发Ubuntu Scope. 在今天的教程中.我们将具体介绍怎样使用go语言来开发我们的Scope.这对于非常多的不太熟悉C ...

  8. 开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据

    项目地址:http://www.freeteam.cn/ 生成栏目列表数据 提取当前管理网站下同意移动APP訪问的栏目列表,生成json数据到/site/网站文件夹/mobile/channels.h ...

  9. ExtJs 给grid某一单元格重新赋值

    // 司机,搬运工提成 var commissionMoney = (waybillsFtQty * commissionMoneyRatio / personCount).toFixed(2); / ...

  10. Codeforces Round #276 (Div. 1)B. Maximum Value 筛法

    D. Maximum Value     You are given a sequence a consisting of n integers. Find the maximum possible ...