文档章节

每日一练0

 等不到天亮_等时光
发布于 2017/12/12 09:55
字数 667
阅读 8
收藏 0

1.A+B问题

描述:给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

说明:

a和b都是 32位 整数么?

  • 是的

我可以使用位运算符么?

  • 当然可以

错误代码:(很难发现的bug;a=6,b=-5时出错)

 public class Solution {
    public int aplusb(int a, int b) {
        if(a == -b){
            return 0;
        }else{

            // 位运算
            return (a^b)|((a&b)<<1);
        }
    }
};

通过代码:

public class Solution {
    public int aplusb(int a, int b) {  
        if(a==0) return b;  //不再进位
        if(b==0) return a;  //不进位操作为零,直接取进位操作的结果
        int sum,i;  
        i=a^b; //不进位相加的结果 
        sum=(a&b)<<1;  //进位的结果
        return aplusb(sum,i); // 递归,两者再进行相加
    }  
}

 

2.尾部的零

描述:设计一个算法,计算出n阶乘中尾部零的个数

说明:时间复杂度为O(logN)

通过代码:

public class Solution {
    public long trailingZeros(long n) {
        long count0 = 0;
        for(int i = 1;Math.pow(5,i)<=n;i++){
            count0 += n/(long)Math.pow(5,i);
        }
        return count0;
    }

}

总结:

(1).数学方法计算阶乘尾部的零

参考:http://blog.163.com/taoqibao_tao/blog/static/122906690200962784627562/

(2).Math.pow(5,i); // 计算以5为底,i为指数的值

 

3.统计数字

描述:计算数字k在0到n中的出现的次数,k可能是0~9的一个值

样例:

例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)

通过代码:

public class Solution {
    public int digitCounts(int k, int n) {
        int count = 0; //计数器
        int i = 0; // 遍历的中间变量
        for(;i<=n;i++){
            if(Integer.toString(i).contains(Integer.toString(k))){
                if(Integer.toString(i).length() == 1){
                    count += 1;
                }else{
                    for(int j=1;j<=Integer.toString(i).length();j++){

                        // 设整数i长度为m,则i除以m-1次方取模10得到最高位的值,依次类推可得i各个位的值
                        if(Integer.toString((i/(int)Math.pow(10, j-1))%10).contains(Integer.toString(k))){
                            count += 1;
                        }
                    }
                }
            }
        }
        return count;
    }
}

 

4.丑数Ⅱ

描述:设计一个算法,找出只含素因子235 的第 n 小的数。

符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...

注意事项:我们可以认为1也是一个丑数

样例:如果n=9,返回10

挑战:要求时间复杂度为O(nlogn)或者O(n)

通过代码:

public class Solution {
    public int nthUglyNumber(int n) {
        int[] ugly = new int[n];
        ugly[0] = 1;
        int num_2 = 0;
        int num_3 = 0;
        int num_5 = 0;
        for(int i=1;i<n;i++){
            ugly[i] = Math.min(Math.min(ugly[num_2]*2, ugly[num_3]*3),ugly[num_5]*5);
            if(ugly[i]/ugly[num_2] == 2){
                num_2++;
            }
            if(ugly[i]/ugly[num_3] == 3){
                num_3++;
            }
            if(ugly[i]/ugly[num_5] == 5){
                num_5++;
            }
        }
        return ugly[n-1];
    }
}

参考链接:http://blog.csdn.net/lhanchao/article/details/52079323

 

© 著作权归作者所有

粉丝 0
博文 10
码字总数 13155
作品 0
岳阳
程序员
私信 提问
hcdp每日一练错误

16 端口隔离 各个办公区通信的隔离需求 Mux VLAN AD BC 同一个VLAN下的A和B仍然可相互通信 只能收到,不能向其他的端口发送 21 105 GARP joinln leave Empty joinEmpty LeaveAll BCD 24 vla...

awdefg
2016/02/22
0
0
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:每日维护及解决up小助手遇到的问题 mz_java后台:解决根据不同的销售状态进行查询 bwk后台:配置服务器 项目负责人:季景胜 up_Android:服务器地址更改,版...

风化的骆驼
2016/11/21
1
0
开源热评 | 全民狂欢享三重福利,你是受追捧的老司机吗

都说 OSC 人才辈出,满地段子手,但苦于不知如何表现,独让@红薯抢了风头。 现在,机会来了。 开源中国开启全民狂欢季,只要评论每日更新的“新闻资讯和软件更新资讯”,即享三重福利: 福利...

oschina
2017/05/15
3K
13
5月开源热评 Top 榜:我已编程半生,归来仍是小孩!

5月“开源热评”活动于5月15日上线,并于5月31日结束,在半个月的活动时间内,许多小伙伴已经找到了正确的上热评的姿势。 受活动时间限制,5月有四位 oscer 的评论点赞数超过了 50:其中有两...

王练
2017/06/06
7.5K
14
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:暂无更新 mz_java后台:新增会员期限兑换码兑换功能,修改装修图库分类 bwk后台:暂无更新 项目负责人:季景胜 up_Android:暂无更新 upzg_Android:暂无更...

风化的骆驼
2016/12/05
2
0

没有更多内容

加载失败,请刷新页面

加载更多

GMTC2019|闲鱼-基于Flutter的架构演进与创新

2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地。未来将持续关注终端技术的演变及趋势 Flutter的优势与挑战 Flutter是Google开源的...

阿里云官方博客
21分钟前
1
0
ubuntu安装软件 报错:下列软件包有未满足的依赖关系

ubuntu安装软件,一直出现以下错误,还纳闷为毛都和 lksctp-tools 有关,上网差发现可能是 lksctp-tools安装错误。 pvc@pvc-Vostro-3650:~$ sudo apt-get install libnet1-dev 正在读取软件包...

琴麻岛
22分钟前
1
0
GMTC2019|闲鱼-基于Flutter的架构演进与创新

2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地。未来将持续关注终端技术的演变及趋势 Flutter的优势与挑战 Flutter是Google开源的...

zhaowei121
23分钟前
0
0
一段话系列-在抢购秒杀中,如何解决Redis读写分离带来的,主从同步延迟问题?

在抢购秒杀中,我们将数据缓存在Redis中,Redis我们为了提高QPS,使用了读写分离的架构,随之而来的便是主从同步延迟问题;在这里,我认为针对于主从同步延迟问题是不可避免的,我给出的解决...

EasyProgramming
25分钟前
3
0
linux sudo java : command not found

运行sudo java -version报错 [admin@localhost xxx]$ sudo java -version sudo: java: command not found 原因: 当使用sudo去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化...

朝如青丝暮成雪
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部