Skip to content

Commit 5281429

Browse files
Bruce YangBruce Yang
Bruce Yang
authored and
Bruce Yang
committed
Initialize posts.
1 parent 8f4b7f8 commit 5281429

31 files changed

+420
-0
lines changed

91algo/daily/posts/day1.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# day1 - leetcode989. 数组形式的整数加法[2021-09-10]
2+
3+
## 题目地址(989. 数组形式的整数加法)
4+
5+
[989. 数组形式的整数加法](https://leetcode-cn.com/problems/add-to-array-form-of-integer/)
6+
7+
https://leetcode-cn.com/problems/add-to-array-form-of-integer/
8+
9+
## 入选理由
10+
11+
1. 简单题目,适合大家上手。
12+
2. 之前力扣官方的每日一题,质量比较高
13+
14+
## 题目描述
15+
16+
对于非负整数 `X` 而言,`*X*`*数组形式*是每位数字按从左到右的顺序形成的数组。例如,如果 `X = 1231`,那么其数组形式为 `[1,2,3,1]`
17+
18+
给定非负整数 `X` 的数组形式 `A`,返回整数 `X+K` 的数组形式。
19+
20+
**示例 1:**
21+
22+
输入:A = [1,2,0,0], K = 34 输出:[1,2,3,4] 解释:1200 + 34 = 1234
23+
24+
**示例 2:**
25+
26+
输入:A = [2,7,4], K = 181 输出:[4,5,5] 解释:274 + 181 = 455
27+
28+
**示例 3:**
29+
30+
输入:A = [2,1,5], K = 806 输出:[1,0,2,1] 解释:215 + 806 = 1021
31+
32+
**示例 4:**
33+
34+
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1 输出:[1,0,0,0,0,0,0,0,0,0,0] 解释:9999999999 + 1 = 10000000000
35+
36+
**提示:**
37+
38+
1. `1 <= A.length <= 10000`
39+
2. `0 <= A[i] <= 9`
40+
3. `0 <= K <= 10000`
41+
4. 如果 `A.length > 1`,那么 `A[0] != 0`
42+
43+
## 难度
44+
45+
- 简单
46+
47+
## 标签
48+
49+
[数组](https://leetcode-cn.com/tag/array/), [数学](https://leetcode-cn.com/tag/math/)
50+
51+
## 前置知识
52+
53+
- 数组的遍历
54+
55+
## 思路
56+
57+
### 双指针 + 进位加法逻辑
58+
59+
双指针, 让两个数的末位对齐, 两个指针 i, j均从各自字符串的末尾开始走。
60+
61+
定义一个数组来存放结果, 一个int值carry来记录每位的进位值, 初始值设为0。
62+
算当前位置的数时, sum = a[i] + b[j] + carry, 每趟都要记得更新carry的值。
63+
64+
循环结束时, 由于低位的数字字符先加到了结果字符串中, 最后还需要 reverse 一次, 让位置恢复正常。
65+
66+
## 代码
67+
68+
### 实现语言: C++
69+
70+
```cpp
71+
class Solution {
72+
public:
73+
vector<int> addToArrayForm(vector<int>& A, int k) {
74+
if (k == 0) return A;
75+
vector<int> res;
76+
int n = A.size();
77+
// 对位相加
78+
int carry = 0;
79+
int sum = 0;
80+
int i = n - 1;
81+
while (k > 0 || i >= 0)
82+
{
83+
sum = carry + (k % 10);
84+
if (i >= 0) // 保证访问A[i]前不越界
85+
sum += A[i];
86+
87+
carry = (sum <= 9) ? 0 : 1;
88+
res.push_back(sum % 10);
89+
k = k / 10;
90+
91+
i--;
92+
}
93+
if (carry == 1) res.push_back(1);
94+
reverse(res.begin(), res.end());
95+
return res;
96+
}
97+
};
98+
```
99+
100+
代码已上传到: [leetcode-ac/91algo - github.com](https://github.com/yanglr/leetcode-ac/tree/master/91algo)
101+
102+
## 复杂度分析
103+
104+
- 时间复杂度:O(max(n, k)),其中 n 为数组长度, k为数K的长度。
105+
- 空间复杂度:O(n), 主要是结果数组用的空间

91algo/daily/posts/day10.md

Whitespace-only changes.

91algo/daily/posts/day11.md

Whitespace-only changes.

91algo/daily/posts/day12.md

Whitespace-only changes.

91algo/daily/posts/day13.md

Whitespace-only changes.

91algo/daily/posts/day14.md

Whitespace-only changes.

91algo/daily/posts/day15.md

Whitespace-only changes.

91algo/daily/posts/day16.md

Whitespace-only changes.

91algo/daily/posts/day17.md

Whitespace-only changes.

91algo/daily/posts/day18.md

Whitespace-only changes.

91algo/daily/posts/day19.md

Whitespace-only changes.

91algo/daily/posts/day2.md

Whitespace-only changes.

91algo/daily/posts/day20.md

Whitespace-only changes.

91algo/daily/posts/day21.md

Whitespace-only changes.

91algo/daily/posts/day22.md

Whitespace-only changes.

91algo/daily/posts/day23.md

Whitespace-only changes.

91algo/daily/posts/day24.md

Whitespace-only changes.

91algo/daily/posts/day25.md

Whitespace-only changes.

91algo/daily/posts/day26.md

Whitespace-only changes.

91algo/daily/posts/day27.md

Whitespace-only changes.

91algo/daily/posts/day28.md

Whitespace-only changes.

91algo/daily/posts/day29.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# day1 - leetcode989. 数组形式的整数加法[2021-09-10]
2+
3+
## 题目地址(989. 数组形式的整数加法)
4+
5+
[989. 数组形式的整数加法](https://leetcode-cn.com/problems/add-to-array-form-of-integer/)
6+
7+
https://leetcode-cn.com/problems/add-to-array-form-of-integer/
8+
9+
## 入选理由
10+
11+
1. 简单题目,适合大家上手。
12+
2. 之前力扣官方的每日一题,质量比较高
13+
14+
## 题目描述
15+
16+
对于非负整数 `X` 而言,`*X*`*数组形式*是每位数字按从左到右的顺序形成的数组。例如,如果 `X = 1231`,那么其数组形式为 `[1,2,3,1]`
17+
18+
给定非负整数 `X` 的数组形式 `A`,返回整数 `X+K` 的数组形式。
19+
20+
**示例 1:**
21+
22+
输入:A = [1,2,0,0], K = 34 输出:[1,2,3,4] 解释:1200 + 34 = 1234
23+
24+
**示例 2:**
25+
26+
输入:A = [2,7,4], K = 181 输出:[4,5,5] 解释:274 + 181 = 455
27+
28+
**示例 3:**
29+
30+
输入:A = [2,1,5], K = 806 输出:[1,0,2,1] 解释:215 + 806 = 1021
31+
32+
**示例 4:**
33+
34+
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1 输出:[1,0,0,0,0,0,0,0,0,0,0] 解释:9999999999 + 1 = 10000000000
35+
36+
**提示:**
37+
38+
1. `1 <= A.length <= 10000`
39+
2. `0 <= A[i] <= 9`
40+
3. `0 <= K <= 10000`
41+
4. 如果 `A.length > 1`,那么 `A[0] != 0`
42+
43+
## 难度
44+
45+
- 简单
46+
47+
## 标签
48+
49+
[数组](https://leetcode-cn.com/tag/array/), [数学](https://leetcode-cn.com/tag/math/)
50+
51+
## 前置知识
52+
53+
- 数组的遍历
54+
55+
## 思路
56+
57+
### 双指针 + 进位加法逻辑
58+
59+
双指针, 让两个数的末位对齐, 两个指针 i, j均从各自字符串的末尾开始走。
60+
61+
定义一个数组来存放结果, 一个int值carry来记录每位的进位值, 初始值设为0。
62+
算当前位置的数时, sum = a[i] + b[j] + carry, 每趟都要记得更新carry的值。
63+
64+
循环结束时, 由于低位的数字字符先加到了结果字符串中, 最后还需要 reverse 一次, 让位置恢复正常。
65+
66+
## 代码
67+
68+
### 实现语言: C++
69+
70+
```cpp
71+
class Solution {
72+
public:
73+
vector<int> addToArrayForm(vector<int>& A, int k) {
74+
if (k == 0) return A;
75+
vector<int> res;
76+
int n = A.size();
77+
// 对位相加
78+
int carry = 0;
79+
int sum = 0;
80+
int i = n - 1;
81+
while (k > 0 || i >= 0)
82+
{
83+
sum = carry + (k % 10);
84+
if (i >= 0) // 保证访问A[i]前不越界
85+
sum += A[i];
86+
87+
carry = (sum <= 9) ? 0 : 1;
88+
res.push_back(sum % 10);
89+
k = k / 10;
90+
91+
i--;
92+
}
93+
if (carry == 1) res.push_back(1);
94+
reverse(res.begin(), res.end());
95+
return res;
96+
}
97+
};
98+
```
99+
100+
代码已上传到: [leetcode-ac/91algo - github.com](https://github.com/yanglr/leetcode-ac/tree/master/91algo)
101+
102+
## 复杂度分析
103+
104+
- 时间复杂度:O(max(n, k)),其中 n 为数组长度, k为数K的长度。
105+
- 空间复杂度:O(n), 主要是结果数组用的空间

91algo/daily/posts/day3.md

Whitespace-only changes.

91algo/daily/posts/day30.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# day1 - leetcode989. 数组形式的整数加法[2021-09-10]
2+
3+
## 题目地址(989. 数组形式的整数加法)
4+
5+
[989. 数组形式的整数加法](https://leetcode-cn.com/problems/add-to-array-form-of-integer/)
6+
7+
https://leetcode-cn.com/problems/add-to-array-form-of-integer/
8+
9+
## 入选理由
10+
11+
1. 简单题目,适合大家上手。
12+
2. 之前力扣官方的每日一题,质量比较高
13+
14+
## 题目描述
15+
16+
对于非负整数 `X` 而言,`*X*`*数组形式*是每位数字按从左到右的顺序形成的数组。例如,如果 `X = 1231`,那么其数组形式为 `[1,2,3,1]`
17+
18+
给定非负整数 `X` 的数组形式 `A`,返回整数 `X+K` 的数组形式。
19+
20+
**示例 1:**
21+
22+
输入:A = [1,2,0,0], K = 34 输出:[1,2,3,4] 解释:1200 + 34 = 1234
23+
24+
**示例 2:**
25+
26+
输入:A = [2,7,4], K = 181 输出:[4,5,5] 解释:274 + 181 = 455
27+
28+
**示例 3:**
29+
30+
输入:A = [2,1,5], K = 806 输出:[1,0,2,1] 解释:215 + 806 = 1021
31+
32+
**示例 4:**
33+
34+
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1 输出:[1,0,0,0,0,0,0,0,0,0,0] 解释:9999999999 + 1 = 10000000000
35+
36+
**提示:**
37+
38+
1. `1 <= A.length <= 10000`
39+
2. `0 <= A[i] <= 9`
40+
3. `0 <= K <= 10000`
41+
4. 如果 `A.length > 1`,那么 `A[0] != 0`
42+
43+
## 难度
44+
45+
- 简单
46+
47+
## 标签
48+
49+
[数组](https://leetcode-cn.com/tag/array/), [数学](https://leetcode-cn.com/tag/math/)
50+
51+
## 前置知识
52+
53+
- 数组的遍历
54+
55+
## 思路
56+
57+
### 双指针 + 进位加法逻辑
58+
59+
双指针, 让两个数的末位对齐, 两个指针 i, j均从各自字符串的末尾开始走。
60+
61+
定义一个数组来存放结果, 一个int值carry来记录每位的进位值, 初始值设为0。
62+
算当前位置的数时, sum = a[i] + b[j] + carry, 每趟都要记得更新carry的值。
63+
64+
循环结束时, 由于低位的数字字符先加到了结果字符串中, 最后还需要 reverse 一次, 让位置恢复正常。
65+
66+
## 代码
67+
68+
### 实现语言: C++
69+
70+
```cpp
71+
class Solution {
72+
public:
73+
vector<int> addToArrayForm(vector<int>& A, int k) {
74+
if (k == 0) return A;
75+
vector<int> res;
76+
int n = A.size();
77+
// 对位相加
78+
int carry = 0;
79+
int sum = 0;
80+
int i = n - 1;
81+
while (k > 0 || i >= 0)
82+
{
83+
sum = carry + (k % 10);
84+
if (i >= 0) // 保证访问A[i]前不越界
85+
sum += A[i];
86+
87+
carry = (sum <= 9) ? 0 : 1;
88+
res.push_back(sum % 10);
89+
k = k / 10;
90+
91+
i--;
92+
}
93+
if (carry == 1) res.push_back(1);
94+
reverse(res.begin(), res.end());
95+
return res;
96+
}
97+
};
98+
```
99+
100+
代码已上传到: [leetcode-ac/91algo - github.com](https://github.com/yanglr/leetcode-ac/tree/master/91algo)
101+
102+
## 复杂度分析
103+
104+
- 时间复杂度:O(max(n, k)),其中 n 为数组长度, k为数K的长度。
105+
- 空间复杂度:O(n), 主要是结果数组用的空间

0 commit comments

Comments
 (0)