[Intermediate Algorithm] - Drop it
题目
队友该卖就卖,千万别舍不得。
当你的队伍被敌人包围时,你选择拯救谁、抛弃谁非常重要,如果选择错误就会造成团灭。
如果是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的更多相关文章
- [Intermediate Algorithm] - Arguments Optional
题目 创建一个计算两个参数之和的 function.如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果. 例如,add(2, 3) 应该返回 5,而 ...
- [Intermediate Algorithm] - Everything Be True
题目 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返回ture.反之,返回false ...
- [Intermediate Algorithm] - Steamroller
题目 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. 提示 Array.isArray() 测试用例 steamroller([[["a"]], [["b&qu ...
- [Intermediate Algorithm] - Finders Keepers
题目 写一个 function,它浏览数组(第一个参数)并返回数组中第一个通过某种方法(第二个参数)验证的元素. 提示 Array.filter() 测试用例 find([1, 3, 5, 8, 9, ...
- [Intermediate Algorithm] - Binary Agents
题目 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 提示 String.charCodeAt() String.fromCharCode() 测试用例 binaryAgent ...
- [Intermediate Algorithm] - Smallest Common Multiple
题目 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 范围是两个数字构成的数组,两个数字不一定按数字顺序排序. 例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小 ...
- [Intermediate Algorithm] - Sum All Primes
题目 求小于等于给定数值的质数之和. 只有 1 和它本身两个约数的数叫质数.例如,2 是质数,因为它只能被 1 和 2 整除.1 不是质数,因为它只能被自身整除. 给定的数不一定是质数. 提示 For ...
- [Intermediate Algorithm] - Sum All Odd Fibonacci Numbers
题目 给一个正整数num,返回小于或等于num的斐波纳契奇数之和. 斐波纳契数列中的前几个数字是 1.1.2.3.5 和 8,随后的每一个数字都是前两个数字之和. 例如,sumFibs(4)应该返回 ...
- [Intermediate Algorithm] - Spinal Tap Case
题目 将字符串转换为 spinal case.Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词. 提示 ...
随机推荐
- 球的序列(formation.*)
N个编号为1-n的球,每个球都有唯一的编号.这些球被排成两种序列,分别为A.B序列,现在需要重新寻找一个球的序列l,对于这个子序列l中任意的两个球,要求j,k(j<k),都要求满足lj在A中 ...
- sql server 学习课件 PPT
http://www.cnblogs.com/woodytu/p/4465288.html
- not in 和 <> 不走索引
首先我们要知道的一点就是CBO的代码oracle是不会对我们公开的,起码现在是.所以本文中的结论不一定适用所有的版本.在应用本文的结论之前最好先试一下. ok 下面就是本文的结论,当你在where语句 ...
- Openfire:XMPP的几种消息类型
XMPP 有以下几种消息类型: l Normal l Chat l Groupchat l Headline l Error 根据官方文档(http://www.igniterea ...
- maven打包需要设置main-class的插件写法
maven打包需要设置main-class的插件写法 <build> <plugins> <plugin> <groupId>org.apache.ma ...
- 用户向导左右滑动页面实现之ViewPager
接着上一篇博客.上一篇博客是用ImageSwitcher实现用户向导功能,如今用ViewPager实现同样的功能. 直接看代码: 布局文件activity_main.xml <RelativeL ...
- 使用golang来设计我们的Ubuntu Scope
我们知道golang越来越被非常多的开发人员来开发应用.go语言也能够用于开发Ubuntu Scope. 在今天的教程中.我们将具体介绍怎样使用go语言来开发我们的Scope.这对于非常多的不太熟悉C ...
- 开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
项目地址:http://www.freeteam.cn/ 生成栏目列表数据 提取当前管理网站下同意移动APP訪问的栏目列表,生成json数据到/site/网站文件夹/mobile/channels.h ...
- ExtJs 给grid某一单元格重新赋值
// 司机,搬运工提成 var commissionMoney = (waybillsFtQty * commissionMoneyRatio / personCount).toFixed(2); / ...
- 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 ...