失败学专家诶♬ 2023-08-19 00:50 采纳率: 83.9%
浏览 2
已结题

关于leetcode第400题,第N位数字

关于leetcode第N位数字,为什么这个案例不能通过呢,有点疑惑,又应该怎么修改呢?然后对比了一下k神的题解想修改一下,发现会报错,为什么左边的不会报错呢?左边的n(int)-count(long)不是也会精度损失吗[疑问]

img

img

img

img


```java
public static int findNthDigit(int n) {
        if(n<=9)//提前判断,可以提高点效率,并且以下是针对两位数及以上的算法
            return n;
        int nums = 9;//代表各个阶段的数字总个数,先初始化个位有9个
        int digit = 1;//代表位数进制,个,十,百,以此类推
        int count = 1;//代表几位数,先初始化为一位数
        while (true) {
            if ((n - nums * digit * count) < 0)
                break;//跳出循环后,nums可以代表
            n = n - nums * digit * count;
            digit = digit * 10;
            count++;
        }
        int remain = n % count;//在数字上的余数,比如123,如果余数为0,则代表末尾3
        int findnumber = digit + (n+1) / count - 1;//求出我们要找的那个数字
        int last = findnumber % 10;//因为余数为0是该数字的最后一位数
        findnumber /= 10;//进行调整
        //如果findnumber是1234,那么就得把最后一位放成第一位,拼接成4123
        String find = last + "" + findnumber + "";//拼接后就可以按照index巧妙地返回最后的结果了
        return find.charAt(remain)-'0';//注意最后返回的是int类型
    }

```

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-19 04:15
    关注

    【以下回答由 GPT 生成】

    问题标题: 关于leetcode第400题,第N位数字 问题标签: leetcode

    问题内容: 我在解leetcode第400题的时候遇到了问题。我不明白为什么我的代码无法通过测试案例,感到有些困惑。请问我应该如何修改代码才能解决这个问题呢?我还对比了一下k神的题解,尝试进行了修改,但是出现了错误。我想知道为什么我修改后的代码报错,而原来的代码没有报错。我认为即使是左边定义的n(int类型)和count(long类型)也会存在精度损失问题,请问我理解得对吗?

    解答: 首先,针对无法通过测试案例的问题,我们需要具体了解你的代码和输入的测试案例以及出现的错误信息。只有这样我们才能帮助你找到问题并提供解决方案。

    其次,针对你对代码报错和精度损失的疑问,我可以给你一些解释。

    1. 为什么修改后的代码报错,而原来的代码没有报错? 这很有可能是因为你在修改过程中引入了一些错误,例如语法错误、逻辑错误等。对于这种情况,你应该仔细检查修改的部分,确保代码的正确性。

    2. n(int)-count(long)会存在精度损失吗? 在计算机中,数值的类型是有范围限制的。对于整数类型,范围一般是固定的,例如int类型的范围是-2147483648到2147483647。而对于long类型,范围通常更大一些,例如-9223372036854775808到9223372036854775807。当进行数值运算时,如果结果超出了该类型的范围,就会发生溢出或截断,从而导致精度损失。因此,当你将一个long类型的值减去一个int类型的值时,可能会导致精度损失。为了避免这种问题,你可以将int类型的值先转换为long类型再进行运算。例如:

    java long result = (long)n - count;

    请提供你的代码和测试案例以供更好地解答你的问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件