zoukankan      html  css  js  c++  java
  • 18.4---2出现了几次(CC150)

    思路:1,先给出LTE的代码:

        public static  int countNumberOf2s(int n) {
            // write code here
            int res = 0;
            for(int i = 0; i <=n ; i++){
                res += count(i);
            }
            return res;
        }
        public static int count(int n){
            int ans = 0;
            while(n > 0){
                if(n % 10 == 2){
                    ans++;
                }
                n = n / 10;
            }
            return ans;
        }
    View Code

    2,思路是每一个位置是2的时候,有几个数。

    当着一个位置是大于2的时候,那么放2了。前面的high可以从0一直到它本身,所以是(high+1)*flag之所以*flag是因为后面的low可以0到它本身,因为大于2了。

    这个位置是==2的时候,放上去2,那么前面先放0到high-1,后面low随便取。所以,high*flag。high取它本身的时候,那么后面只能是0-low的取法,所以是:high*flag + (low+1).

    这个位置是<2的时候,放上去2,那么前面只能去0到high-1.后面随便取,所以是high*flag。

    附上代码:

        public static  int countNumberOf2s(int n) {
            // write code here
            int res = 0;
            for(int i = 0; i <=n ; i++){
                res += count(i);
            }
            return res;
        }
        public static int count(int n){
            int ans = 0;
            while(n > 0){
                if(n % 10 == 2){
                    ans++;
                }
                n = n / 10;
            }
            return ans;
        }
    View Code
  • 相关阅读:
    VS Code 的常用快捷键
    oj教程--坑
    oj教程--学习顺序
    oj教程--链表
    oj教程--队列
    oj教程--栈
    【MySQL】汇总数据
    【MySQL】使用WHERE子句
    【MySQL】SELECT语句
    【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)
  • 原文地址:https://www.cnblogs.com/yueyebigdata/p/5104725.html
Copyright © 2011-2022 走看看