zoukankan      html  css  js  c++  java
  • Leetcode 400.第n个数

    第n个数

    在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 个数字。

    注意:
    是正数且在32为整形范围内 ( n < 231)

    示例 1:

    输入:

    3

     

    输出:

    3

    示例 2:

    输入:

    11

     

    输出:

    0

     

    说明:

    11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。

     1 public class Solution {
     2     /**
     3      * 这里是找第n个数字(这里的数和数字有区别,数字可以理解为将所有数拼合成一个字符串后的第n为对应的数字(0-9))
     4      * 这里首先分析一下位数和规律
     5      * 个位数:1-9,一共9个,共计9个数字
     6      * 2位数:10-99,一共90个,共计180个数字
     7      * 3位数:100-999,一共900个,共计2700个数字
     8      * 4位数,1000-9999,一共9000个,共计36000个数字
     9      * 以此类推,
    10      * 这样我们就可以首先定位到是哪个数,再找到其对应的数字
    11      * */
    12 
    13     public int findNthDigit(int n) {
    14         //小心溢出
    15         int digitType = 1;
    16         long digitNum = 9;
    17         //定位到是几位数
    18         while(n > digitNum*digitType){
    19             n -= (int) digitNum*digitType ;
    20             digitType++;
    21             digitNum*=10;
    22         }
    23         //定位到是这些几位数里面的第几个的第几位
    24         int indexInSubRange = (n -1) / digitType;
    25         int indexInNum = (n -1) % digitType;
    26         //还原数字
    27         int num = (int)Math.pow(10,digitType - 1) + indexInSubRange ;
    28         int result = Integer.parseInt((""+num).charAt(indexInNum)+"");
    29         return result;
    30     }
    31 }
  • 相关阅读:
    day72日考
    项目开发流程
    js 之 JSON详解
    MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
    mysql 之 函数
    liunx 之 Ubuntu 网速慢解决方法
    js 之 object
    js 之 箭头函数 (未学完)
    java 之 学习过程中遇到的大佬博客
    java 之 enum(枚举)
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10235405.html
Copyright © 2011-2022 走看看