From 2f5c5e590d54a9436b65caa0bce09abb0c3407a2 Mon Sep 17 00:00:00 2001 From: algorithmzuo Date: Tue, 30 Aug 2022 15:51:44 +0800 Subject: [PATCH] modify code --- 大厂刷题班/class19/Code03_OneNumber.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/大厂刷题班/class19/Code03_OneNumber.java b/大厂刷题班/class19/Code03_OneNumber.java index 36f2cd6..6989aae 100644 --- a/大厂刷题班/class19/Code03_OneNumber.java +++ b/大厂刷题班/class19/Code03_OneNumber.java @@ -24,9 +24,10 @@ public class Code03_OneNumber { return res; } - - // 1 ~ num 这个范围上,画了几道1 - public static int solution2(int num) { + // 测试链接 : + // https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/ + // 提交如下方法可以直接通过 + public static int countDigitOne(int num) { if (num < 1) { return 0; } @@ -36,10 +37,10 @@ public class Code03_OneNumber { if (len == 1) { return 1; } - // num 13625 + // num 13625 // tmp1 10000 - // - // num 7872328738273 + // + // num 7872328738273 // tmp1 1000000000000 int tmp1 = powerBaseOf10(len - 1); // num最高位 num / tmp1 @@ -51,7 +52,7 @@ public class Code03_OneNumber { // 最高位1 10(k-2次方) * (k-1) * 1 // 最高位first 10(k-2次方) * (k-1) * first int otherOneNum = first * (len - 1) * (tmp1 / 10); - return firstOneNum + otherOneNum + solution2(num % tmp1); + return firstOneNum + otherOneNum + countDigitOne(num % tmp1); } public static int getLenOfNum(int num) { @@ -75,7 +76,7 @@ public class Code03_OneNumber { System.out.println("cost time: " + (end1 - start1) + " ms"); long start2 = System.currentTimeMillis(); - System.out.println(solution2(num)); + System.out.println(countDigitOne(num)); long end2 = System.currentTimeMillis(); System.out.println("cost time: " + (end2 - start2) + " ms");