JZ11 二进制中1的个数
function NumberOf1(n)
{
var res = 0;
while(n!=0){
++res;
n &= n-1;
}
return res;
}
module.exports = {
NumberOf1 : NumberOf1
};
JZ12 数值的整数次方
function Power(base, exponent)
{
if(exponent<0){
base = 1/base;
exponent = -exponent;
}
var x = base;
var res = 1.0;
while(exponent!=0){
if(exponent&1){
res*=x;
}
x*=x;
exponent>>=1;
}
return res;
}
module.exports = {
Power : Power
};
JZ31 从1到n整数中1出现的次数
**从1到n整数中1出现的次数:O(logn)算法
**
function NumberOf1Between1AndN_Solution(n)
{
var res = 0, base = 1,round = n;
while(round>0){
let weight = round%10;
round = Math.floor(round/10);
res+=(round*base);
if(weight==1){
res+=(n%base)+1;
}else if(weight>1){
res+=base;
}
base*=10;
}
return res;
}
module.exports = {
NumberOf1Between1AndN_Solution : NumberOf1Between1AndN_Solution
};
JZ33 丑数
剑指 Offer 49. 丑数(动态规划,清晰图解)
function GetUglyNumber_Solution(index)
{
if(index<7) return index;
var a=0,b=0,c=0;
const dp = new Array(index);
dp[0] = 1;
for(let i=1;i<index;i++){
let n2 = dp[a]*2,n3 = dp[b]*3,n5 = dp[c]*5;
dp[i] = Math.min(Math.min(n2,n3),n5);
if(dp[i]===n2) a++;
if(dp[i]===n3) b++;
if(dp[i]===n5) c++;
}
return dp[index-1];
}
module.exports = {
GetUglyNumber_Solution : GetUglyNumber_Solution
};