剑指offer-第三天
2016-07-03 09:56
323 查看
1、二进制中1的个数
/*
*题目描述:求二进制中1的个数
*思路:采用n&(n-1)的方法,直至该表达式为0,统计执行次数即可
*/
public int NumberOf1(int n){
int sum=0;
while(n!=0){
n&=(n-1);
sum++;
}
return sum;
}
2、数值的整数次方
/*
*题目描述:数值的整数次方
*思路:本题考查细节,要尽可能地将所有可能出现的情况都考虑周全
*/
public double Power(double base,int exponent){
boolean flag=false;
if(equals(base,0.0)&&exponent<0){
flag=true;
return 0.0;
}
unsigned int absexponent=(unsigned int)(exponent);
if(exponent<0)
absexponent=(unsigned int)(-expnent);
double result=PowerWithUnsignedExponent(base,absexponent);
if(expnent<0)
result=1.0/result;
return result;
}
public double PowerWithUnsignedExponent(double base,int exponent){
double result=1;
while(exponent--){
result*=base;
}
return result;
}
/*整数次方优化算法
public double PowerWithUnsignedExponent(double base,int exponent){
if(exponent==0) return 1;
if(exponent==1) return base;
double result=PowerWithUnsignedExponent(base,exponent>>1);
if(exponent&Ox1==1)
result*=base;
return result;
}
*/
public boolean equals(double num1,double num2){
if((num1-num2>-0.0000001)&&(num1-num2<=0.0000001)){
return true;
}
else return false;
}
/*
*题目描述:求二进制中1的个数
*思路:采用n&(n-1)的方法,直至该表达式为0,统计执行次数即可
*/
public int NumberOf1(int n){
int sum=0;
while(n!=0){
n&=(n-1);
sum++;
}
return sum;
}
2、数值的整数次方
/*
*题目描述:数值的整数次方
*思路:本题考查细节,要尽可能地将所有可能出现的情况都考虑周全
*/
public double Power(double base,int exponent){
boolean flag=false;
if(equals(base,0.0)&&exponent<0){
flag=true;
return 0.0;
}
unsigned int absexponent=(unsigned int)(exponent);
if(exponent<0)
absexponent=(unsigned int)(-expnent);
double result=PowerWithUnsignedExponent(base,absexponent);
if(expnent<0)
result=1.0/result;
return result;
}
public double PowerWithUnsignedExponent(double base,int exponent){
double result=1;
while(exponent--){
result*=base;
}
return result;
}
/*整数次方优化算法
public double PowerWithUnsignedExponent(double base,int exponent){
if(exponent==0) return 1;
if(exponent==1) return base;
double result=PowerWithUnsignedExponent(base,exponent>>1);
if(exponent&Ox1==1)
result*=base;
return result;
}
*/
public boolean equals(double num1,double num2){
if((num1-num2>-0.0000001)&&(num1-num2<=0.0000001)){
return true;
}
else return false;
}
相关文章推荐
- JavaScript 实现使用时间差来转换倒计时效果。
- jsp中EL表达式获取数据
- APICloud css样式大全
- JS获取当前日期时间及JS日期格式化
- [leetcode]19. Remove Nth Node From End of List
- 1-2jQuery初体验
- JSP-导入taglib 出现classNotFound异常
- JavaScript 输出当前系统时间到页面指定位置。
- ajax跨域getjsonp
- ECIR 2016 Paper Beyond Factoid QA: Effective Methods for Non-factoid Answer Sentence Retrieval
- Nth to Last Node in List
- React Native 中 component 生命周期
- css做导航栏伸缩菜单
- 利用Jquery实现一个典型的form表单前端验证
- Remove Nth Node From End of List
- jQuery 菜单
- NodeJS学习历程(2)
- MXBridge - 插件式JS与OC交互框架
- 前端构建实践01:用 Bower 管理前端依赖
- hdu 4009 Transfer water 最小树形图