文章目录
codewars-js练习
2021/3/10
github 地址
【1】<6kyu>【Multiplication table】
Your task, is to create NxN multiplication table, of size provided in parameter.
example:
1 2 3
2 4 6
3 6 9
for given example, the return value should be: [[1,2,3],[2,4,6],[3,6,9]]
solution
<script type="text/javascript">
multiplicationTable = function(size) {
// console.log(size)s
var temp = [];
for(var i=1 ;i<=size;i++){
for(var j=1;j<=size;j++){
temp.push(i*j);
}
}
var result = [];
for(var z=0;z<temp.length;z+=size){
result.push(temp.slice(z,z+size));
}
return result
}
// 验证
console.log(multiplicationTable(3));//[[1,2,3], [2,4,6], [3,6,9]]
</script>
<script type="text/javascript">
multiplicationTable = function(size) {
// console.log(size)
var result = [];
for(var i=0 ;i<size;i++){
result[i] = [];
for(var j=0;j<size;j++){
result[i][j]= (i+1)*(j+1);
}
}
return result
}
// 验证
console.log(multiplicationTable(3));//[[1,2,3], [2,4,6], [3,6,9]]
</script>
【2】<5kyu>【Make an increasing sequence】
Give you an integer array arr
. Your task is remove the least number of elements, so that the array into an increasing sequence. The result is the increasing sequence.
给你一个整数数组arr。您的任务是删除最少数量的元素,使数组成为一个递增的序列。结果是递增序列
所有元素都是正整数;如果存在多个解决方案,则返回第一个(从左到右,通过索引比较,选择最小的);如果arr已经是递增序列,则返回本身;如果arr是递减序列,则返回一个只包含第一个元素的数组。
example:
arr = [1,100,2,3,100,4,5]
should return: [1,2,3,4,5]
(remove elements: 100,100)
solution
<script type="text/javascript">
function increasingSequence(arr){
var max=0, p=0, S=arr.length;
var cnt=arr.map(_=>1), jump=arr.map(_=>-1);
// 倒序进行比较
for(var i=S-2;i>=0;i--){
var v=arr[i], c=cnt[i];
for(var j=i+1;c-1+j<S;j++)
if(v<arr[j] && c<=cnt[j]){
cnt[i]=c=cnt[j]+1; jump[i]=j;
}
if(max<=c){ max=c; p=i; }
}
var out=[];
while(p!=-1){
out.push(arr[p]);
p=jump[p];
}
return out;
}
// 验证
// console.log(increasingSequence([1, 1, 1, 2]));// [1, 2]
console.log(increasingSequence([186,186,150,200,160,130,197,220]));// [150,160,197,220]
// console.log(increasingSequence([1,2,3,4,5]));// [1,2,3,4,5]
// console.log(increasingSequence([5,4,3,2,1]));//[5]
</script>
【1】<7kyu>【Largest 5 digit number in a series】
example:
283910 --> 1234567890 //0
solution
<script type="text/javascript">
function solution(digits){
let answer = 0;
for (let i=0; i<digits.length; i++){
let number = digits.substr(i, 5); //each loop iteration pulls the next 5 digits into a substring
if(Number(number) > answer){ //convert to number and compare against answer
answer = Number(number);
}
}
return answer;
}
// 验证
console.log(solution(283910))//0
</script>