टीएल;डीआर
- समस्या: सीटीसीआई समस्या १७.६ का तकनीकी विवरण।
- दृष्टिकोण: सीटीसीआई problem १७.६: count occurrences of digit २ in all numbers from ० to N using digit-by-digit math in O(log N) time.
- जटिलता: इष्टतम समय और मेमोरी संतुलन।
यह लेख सीटीसीआई समस्या १७.६ का एक स्पष्ट विवरण प्रदान करता है।
१. संदर्भ और समस्या कथन
सीटीसीआई problem १७.६: count occurrences of digit २ in all numbers from ० to N using digit-by-digit math in O(log N) time.
२. कोड और कार्यान्वयन
public static int count2sInRange(int number) {
int count = 0;
int len = String.valueOf(number).length();
for (int digit = 0; digit < len; digit++) {
count += count2sAtDigit(number, digit);
}
return count;
}
private static int count2sAtDigit(int number, int d) {
int pow10 = (int) Math.pow(10, d);
int nextPow10 = pow10 * 10;
int right = number % pow10;
int roundDown = number - number % nextPow10;
int roundUp = roundDown + nextPow10;
int digit = (number / pow10) % 10;
if (digit < 2) return roundDown / 10;
if (digit == 2) return roundDown / 10 + right + 1;
return roundUp / 10;
}
३. सारांश और एज केसेस
हमेशा सीमांत स्थितियों और इनपुट की जांच करें।
