auto commit

This commit is contained in:
CyC2018 2018-03-01 11:01:59 +08:00
parent e8a0cd6824
commit 58c76022e0

View File

@ -53,6 +53,7 @@
* [41.2 字符流中第一个不重复的字符](#412-字符流中第一个不重复的字符)
* [42. 连续子数组的最大和](#42-连续子数组的最大和)
* [43. 从 1 到 n 整数中 1 出现的次数](#43-从-1-到-n-整数中-1-出现的次数)
* [44. 数字序列中的某一位数字](#44-数字序列中的某一位数字)
* [45. 把数组排成最小的数](#45-把数组排成最小的数)
* [49. 丑数](#49-丑数)
* [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置)
@ -1401,6 +1402,44 @@ public int NumberOf1Between1AndN_Solution(int n) {
}
```
## 44. 数字序列中的某一位数字
**题目描述**
数字以 0123456789101112131415... 的格式序列化到一个字符串中,求这个字符串的第 index 位。
```java
int digitAtIndex(int index) {
if (index >= 0) {
int digit = 1;
while (true) {
int amount = getAmountOfDigit(digit);
int totalAmount = amount * digit;
if (index < totalAmount) return digitAtIndex(index, digit);
index -= totalAmount;
digit++;
}
}
return -1;
}
private int getAmountOfDigit(int digit) {
if (digit == 1) return 10;
return (int) Math.pow(10, digit - 1);
}
private int digitAtIndex(int index, int digits) {
int number = beginNumber(digits) + index / digits;
int remain = index % digits;
return (number + "").charAt(remain) - '0';
}
private int beginNumber(int digits) {
if (digits == 1) return 0;
return (int) Math.pow(10, digits - 1);
}
```
## 45. 把数组排成最小的数
**题目描述**