美文网首页
Java日记2018-05-14

Java日记2018-05-14

作者: hayes0420 | 来源:发表于2018-05-14 06:56 被阅读0次

第一题 从 1 到 n 整数中 1 出现的次数
最直观的想法,求1到n中每个整数中1出现的次数,然后相加即可。而求每个十进制整数中1出现的次数,我们先判断这个数的个位数是否是1,如果这个数大于10,除以10之后再判断个位数是否为1,循环直至求出该整数包含1的个数

public class NumberOf1Between1AndN {  
  
    public int NumberOf1Between1AndN_Solution(int n) {  
        int count = 0;  
        for (int i = 1; i <= n; i++) {  
            count += getNumOf1(i);  
        }  
  
        return count;  
    }  
  
    private int getNumOf1(int i) {  
        int count = 0;  
        while (i > 0) {  
            if (i % 10 == 1) {  
                count++;  
            }  
            i = i / 10;  
        }  
  
        return count;  
    }  
}  

不直观的算法 参考 https://blog.csdn.net/yi_afly/article/details/52012593 没太理解,今天再想想
若weight为0,则1出现次数为roundbase
若weight为1,则1出现次数为round
base+former+1
若weight大于1,则1出现次数为rount*base+base

public static int count(int n) {
        if(n<1) return 0;
        int round = n;
        int base =1;
        int cnt=0;
        while(round>0) {
            int weight = round%10;
            round/=10;
            cnt+= cnt*base;
            if(weight==1)
                cnt+=(n%base)+1;
            else if(weight>1)
                cnt+=base;
            base*=10;
        }
        return cnt;
    }

第二题 数字序列中某一位的数字
题目没太懂 后边再说

第三题 把数组排成最小的数

方法就是讲整数变string,然后用arrays排序,排序完打印

public static  String PrintMinNumber(int[] numbers) {
        int n = numbers.length;
        String[] nums = new String[n];
        for (int i = 0; i < n; i++)
            nums[i] = numbers[i] + "";
        //lambda箭头来表示,还有这种方法,简洁
        Arrays.sort(nums, (s1, s2) -> (s1 + s2).compareTo(s2 + s1));
 
        String ret = "";
        for (String str : nums)
            ret += str;
        return ret;
    }

相关文章

  • 2018-05-14

    我和孩子共成长11 ZhuPeifen 2018-05-14 22:24 · 字数 310 · 阅读 0 · 日记...

  • 六项精进

    太平人寿毛毛 2018-05-14 23:22 · 字数 374 · 阅读 46 · 日记本 毛凤霞~中国太平 【...

  • Java日记2018-05-14

    第一题 从 1 到 n 整数中 1 出现的次数最直观的想法,求1到n中每个整数中1出现的次数,然后相加即可。而求每...

  • 王霞感恩功课第161天

    王霞感恩功课第161天 王霞王夏 2018-05-14 19:35 · 字数 5310 · 阅读 62 · 日记本...

  • 2018-05-14

    2018-05-14· 字数 507· 阅读 74· 日记本 姓名:周富强 公司:厦门大科机械有限公司 日精进打卡...

  • 做好自己

    2018-05-14 15:29·字数 403·阅读 10·日记本 是的,不管怎样,生活依然在继续着,可是生活中的...

  • 2018-05-14

    2018-05-14 戴师傅简书作者 2018-05-14 20:21 打开App (稻盛哲学学习会)打卡第58天...

  • 第22天感恩日记 李大伟2018-05-14

    第22天感恩日记 李大伟2018-05-14 1、感恩俊杰帮我解答了职业生涯中的一个选择的困惑,从头梳理了整个...

  • Openstack 一键测试部署

    layout: posttitle: "Openstack 一键测试部署"date: 2018-05-14 00...

  • 2017-12-30

    JAVA学习日记(8) 多态!!很重要

网友评论

      本文标题:Java日记2018-05-14

      本文链接:https://www.haomeiwen.com/subject/zhzrdftx.html