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
} ;