每日一练---codewars6 Range Extract
2020-08-12 本文已影响0人
即将牛逼的蛋蛋
补课!!昨天落下了一天,今天加倍练习。
[-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20]
return "-6,-3-1,3-5,7-11,14,15,17-20"
题目意思呢 是连续的且超过三个以上,用范围表示,其他原样输出
难度:4kyu
思路
- 倒序循环,双层循环
- 用大的索引的值 - 小的索引的值 判断是否大于2 然后看索引的差值是否等于 值的差值 相等的话 说明是连续的
- 数组截取 splice(开始索引,截取个数,需要插入的新的元素)
- 完事儿
下面就开始动手吧,能动手的尽量少动嘴
function solution(list) {
// 第一层循环
for (var i = list.length - 1; i >= 0; i--) {
// 第二层循环,从 0 开始最大值为 i ,
for (var j = 0; j <= i; j++) {
// 索引的差值和值的差值 是否相等 值得差值是否大于2 是的话 说明连续
if (list[i] - list[j] >= 2 && list[i] - list[j] == i - j) {
var str = list[j] + '-' + list[i]
// 数组截取
list.splice(j, i - j + 1, str);
}
}
}
// 最后join() 方法变为字符串 大功告成
return list.join()
}
solution([-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20])
// , "-6,-3-1,3-5,7-11,14,15,17-20"