java最简单题解

整数中1出现的次数(从1到n整数中1出现的次数)

http://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6

#java

为什么大家要想的这么复杂呢 虽然我的方法比较low,可能慢 但是我2分钟就写完了呀(#^.^#)

import java.util.*;
public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) {
        int count = 0;
        // 循环 1->n
        for(int i=1;i<=n;i++){
            count += f(i); 
        }
        return count;
    }
    // 判断有多少个1
    public int f(int n){
        String str = n+"";
        char[] c = str.toCharArray();
        int count = 0;
        for(int i=0;i<c.length;i++){
            if(c[i]=='1'){
                count++;
            }
        }
        return count;
    }
}

简化后

public int NumberOf1Between1AndN_Solution(int n) {
       int count = 0;
        while(n>0){
            String str = String.valueOf(n);
            char [] chars = str.toCharArray();
            for(int i=0;i<chars.length;i++){
                if(chars[i]=='1')
                    count++;
            }
            n--;
        }
        return count;
    }
全部评论
我觉得吧,笔试这么写问题不大,来个保底分,面试这么写,估计没啥意义了
21 回复 分享
发布于 2019-12-12 18:33
这谁不知道,你还不如直接遍历一遍
13 回复 分享
发布于 2019-11-01 20:54
您是来搞笑的吗
11 回复 分享
发布于 2019-12-12 21:16
嘿嘿,其实你用str.charAt(i)来遍历,不用将字符串转化成char数组,还能减少一点空间的开销。
7 回复 分享
发布于 2019-11-06 14:07
你这个写了等于没写,不考虑时间复杂度的。0-65亿你算算看。
3 回复 分享
发布于 2019-12-24 16:59
服了。。。要啥计算机,直接用算盘算了
2 回复 分享
发布于 2020-05-05 00:44
兄弟面试这么写就直接gg了
2 回复 分享
发布于 2020-02-20 00:40
面试是展示长处以战胜其他竞选者的,不是大学考试及格就行。
2 回复 分享
发布于 2020-02-17 12:33
键盘键真多,想出来总比没想出来的好
1 回复 分享
发布于 2020-12-15 16:20
这方法我想都不敢想,厉害了,你这是真不把计算机当人啊
1 回复 分享
发布于 2020-08-12 09:23
你得考虑使用一些技巧在里面,不然数字一大运算时间就长了
1 回复 分享
发布于 2020-02-10 17:58
我的比你用的行数少3行, 空间复杂度O(1),时间复杂度O(nlogn) . 学着点
1 回复 分享
发布于 2020-01-23 15:53
觉得您的思路没什么问题,能解决问题的方法都是好方法,只是在面试中,给不了面试官很好的印象,因为大家都会这样解
点赞 回复 分享
发布于 2021-08-17 09:19
暴力解决可真不大行啊。
点赞 回复 分享
发布于 2021-08-13 20:40
其实跟我一开始想法一致, 最粗暴的做法, 但是时间复杂度和空间复杂度太高
点赞 回复 分享
发布于 2021-04-23 20:22
复杂度,跑到你进坟墓都跑不完,如果不减低复杂度的话
点赞 回复 分享
发布于 2021-04-17 12:14
笔试如果有这个,一个case都过不了吧
点赞 回复 分享
发布于 2021-04-14 20:14
还不如一次遍历呢 StringBuilder stringBuilder = new StringBuilder(); for (int i = 1; i <= n ; i++) { stringBuilder.append(i); } for (char c : stringBuilder.toString().toCharArray()){ if(c == '1') cnt ++; }
点赞 回复 分享
发布于 2021-01-17 13:25
也就机试可以这么写,面试这么写直接就挂了,但是我喜欢
点赞 回复 分享
发布于 2020-10-11 19:19
你比我厉害,我都没想到
点赞 回复 分享
发布于 2020-09-29 09:05

相关推荐

点赞 评论 收藏
分享
独玖:同二本,建议咱俩一起重开
点赞 评论 收藏
分享
评论
76
1
分享

创作者周榜

更多
牛客网
牛客企业服务