Skip to content

Commit d6eec41

Browse files
author
haoyang.shi
committed
add
1 parent 2608176 commit d6eec41

6 files changed

Lines changed: 11 additions & 11 deletions

File tree

offer/FindGreatestSumOfSubArray.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
## 解题思路
1010

11-
通过动态规划计算最大和,$f(i)$ 定义为以第 $i$ 个数字结尾的子数组的最大和,那么 $max(f(i))$ 就有以下公式:
11+
通过动态规划计算最大和,$$f(i)$$ 定义为以第 $$i$$ 个数字结尾的子数组的最大和,那么 $$max(f(i))$$ 就有以下公式:
1212

1313
$$
1414
max(f(i))=\begin{cases}

offer/GetUglyNumber.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
## 解题思路
88

99
1. 通过保存已有丑数的方式,用空间换时间
10-
1. 对于已有丑数 $M$ ,那么下一个丑数 $M=\min(M_{2}\times2,M_{3}\times3,M_{5}\times5)$
11-
2. $M_{max}$ 是目前最大的丑数,那么 $M_{2}$ 是已有丑数中 $M_{2}\times2$ 第一个大于 $M_{max}$ 的丑数
10+
1. 对于已有丑数 $$M$$ ,那么下一个丑数 $$M=\min(M_{2}\times2,M_{3}\times3,M_{5}\times5)$$
11+
2. $$M_{max}$$ 是目前最大的丑数,那么 $$M_{2}$$ 是已有丑数中 $$M_{2}\times2$$ 第一个大于 $$M_{max}$$ 的丑数
1212

1313
```
1414
public int GetUglyNumber_Solution(int index) {

offer/NumberOfOneBetweenOneAndN.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
## 解题思路
1010

11-
1. 假定 $n=21345$ 将数字分为首位和非首位两个部分
12-
2. 对于首位为 1 的情况,如果首位 $>1$ 那么$sum=sum+10^{len(n)-1}$,如果首位 $=1$ 那么 $sum=sum+1$
13-
3. 对于非首位 1,指定其中一位为 1,根据排列组合有 $10^{len(n)-2}\times(len(n)-1)$ 个。那么非首位 1 总共有 $2\times10^{len(n)-2}\times(len(n)-1)$
11+
1. 假定 $$n=21345$$ 将数字分为首位和非首位两个部分
12+
2. 对于首位为 1 的情况,如果首位 $$>1$$ 那么$$sum=sum+10^{len(n)-1}$$,如果首位 $$=1$$ 那么 $$sum=sum+1$$
13+
3. 对于非首位 1,指定其中一位为 1,根据排列组合有 $$10^{len(n)-2}\times(len(n)-1)$$ 个。那么非首位 1 总共有 $$2\times10^{len(n)-2}\times(len(n)-1)$$
1414

1515
```
1616
public int NumberOf1Between1AndN_Solution(int n) {

offer/PrintMinNumber.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
## 解题思路
1010

1111
1. 最直接的办法就是,找到数组中数字的所有排列组合,找到最小的
12-
2. 对于 $m, n$,可以组成 $mn , nm$这两个数,如果 $mn < nm$ 那么,$m$应该在$n$之前
12+
2. 对于 $$m, n$$,可以组成 $$mn , nm$$ 这两个数,如果 $$mn < nm$$ 那么,$$m$$ 应该在 $$n$$ 之前
1313
3. 对于一组数,可以通过上述规则进行排序,依次打印出来就是最小的数
1414
4. 由于组合之后的数可能超出 int 的表示范围,注意使用字符串来处理大数问题
1515

offer/SumOfNDice.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
## 解题思路
88

99
1. 首先考虑一个骰子的情况,那么有 1~6 出现的次数均为 1
10-
2. 再增加一个骰子时,由于各个点数出现的概率一致。用 $f(n,s)=f(n-1,s-1)+f(n-1,s-2)+f(n-1,s-3)+f(n-1,s-4)+f(n-1,s-5)+f(n-1,s-6)$
10+
2. 再增加一个骰子时,由于各个点数出现的概率一致。用 $$f(n,s)=f(n-1,s-1)+f(n-1,s-2)+f(n-1,s-3)+f(n-1,s-4)+f(n-1,s-5)+f(n-1,s-6)$$
1111
3. 使用两个数组循环求解
12-
12+
1313
```
1414
public void SumOfNDice(int n) {
1515
if (n < 1) {

offer/power.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
## 解题思路
88

9-
1.`n` 为偶数时,$a^n = a^{n/2} * a^{n/2}$
10-
2.`n` 为奇数时,$a^n = a^{n/2} * a^{n/2} * a$
9+
1.`n` 为偶数时,$$a^n = a^{n/2} * a^{n/2}$$
10+
2.`n` 为奇数时,$$a^n = a^{n/2} * a^{n/2} * a$$
1111
3. 可以利用类似斐波纳切的方式,利用递归来进行求解
1212

1313
```

0 commit comments

Comments
 (0)