js相关算法
- 传入四个正整数参数,返回最小的两个,代码如下:最优解(别人代码系列)
1
2
3
4
5
6
7
8
9
10function sumTwoSmallestNumbers(numbers) {
var min=Math.min.apply(Math,numbers);
var filterResult= numbers.filter((item)=>{
return (item!=min)
}
)
var smin=Math.min.apply(Math,filterResult);
return min+smin;
//Code here
};1
2
3
4
5function sumTwoSmallestNumbers(numbers){
numbers = numbers.sort(function(a, b){return a - b; });
return numbers[0] + numbers[1];
};
//使用排序解决。。。。 - 给定一个正整数n写成abcd …(a,b,c,d
…是数字)和一个正整数p,我们想要找到一个正整数k,如果存在的话,比如数字的总和对于p的连续幂的n等于k * n。换一种说法:
例如:(a ^ p + b ^(p + 1)+ c ^(p + 2)+ d ^(p + 3)+ …)= n * k
如果是这种情况,我们将返回K,如果不返回-1。
注:N,P将始终作为严格正整数给出。
代码如下:最优解(别人代码系列)1
2
3
4
5
6
7
8
9
10
11function digPow(n, p){
// ...
var s=n.toString();
var sum =0;
for(var i=0;i<s.length;i++){
sum+=Math.pow(s[i],p);
p++;
}
if(sum%n==0) return sum/n;
else return -1;
}1
2
3
4
5
6
7
8function digPow(n, p) {
var x = String(n).split("").reduce((s, d, i) => s + Math.pow(d, p + i), 0)
return x % n ? -1 : x / n
}
//reduce中s为上一次调用回调函数时的返回值,或者初始值
//d为当前正在处理的数组元素
//i为当前数组元素下标
//初始值为0 - 找到n下面所有倍数的总和m,例子:
- sumMul(2, 9) ==> 2 + 4 + 6 + 8 = 20
- sumMul(3, 13) ==> 3 + 6 + 9 + 12 = 30
- sumMul(4, 123) ==> 4 + 8 + 12 + … = 1860
- sumMul(4, -7) ==> “INVALID”
代码如下:别人代码1
2
3
4
5
6
7
8
9
10
11
12
13function sumMul(n,m){
//your idea here
var sum=0;
var double=1;
var val=n;
while(val<m){
sum+=val;
double++;
val=n*double;
}
if(sum==0) return "INVALID";
return sum;
}
1 | function sumMul(n,m){ |
- 公差公式,示例如下:
- arithmetic_sequence_elements(1, 2, 5) == “1, 3, 5, 7, 9”
代码如下:别人代码系列:1
2
3
4
5
6
7
8
9
10
11
12
13
14function arithmeticSequenceElements(a,r,n) {
//your code here
var arr =[];
var i=0;
while(arr.length<n){
if(i==0){ arr[i]=a}
else arr[i]=' '+a;
a=a+r;
i++;
}
arr=arr.toString();
return arr;
}1
2
3
4
5function arithmeticSequenceElements(a,r,n) {
var ret = [a]
while (--n) ret.push(a+=r);
return ret.join(', ')
}
- 去除!示例如下:
- remove(“Hi!”) == “Hi!”
- remove(“Hi!!!”) == “Hi!!!”
- remove(“!Hi”) == “Hi”
- remove(“!Hi!”) == “Hi!”
- remove(“Hi! Hi!”) == “Hi Hi!”
- remove(“Hi”) == “Hi”
代码如下:
1 | function remove(s){ |
别人代码系列:
1 | function remove(s){ |
- 返回最大和最小,示例如下:
- highAndLow(“1 2 3 4 5”); // return “5 1”
- highAndLow(“1 2 -3 4 5”); // return “5 -3”
- highAndLow(“1 9 3 4 -5”); // return “9 -5”
代码如下:
1 | function highAndLow(numbers){ |
别人代码 :
1 | function highAndLow(numbers){ |