Skip to content

Commit 7f1efa6

Browse files
committed
解决64 1283
1 parent 6021397 commit 7f1efa6

File tree

5 files changed

+75
-4
lines changed

5 files changed

+75
-4
lines changed

README.md

+9-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
## 位运算
88

9-
No.136 [cpp](cpp/136.cpp)
9+
+ No.136 [cpp](cpp/136.cpp)
10+
+ No.64 [cpp](cpp/64.cpp) [python](python/64.py)
1011

1112
### 散列表(HashTable)
1213

@@ -15,7 +16,7 @@ No.136 [cpp](cpp/136.cpp)
1516

1617
## 二叉树
1718

18-
#### 二叉树的遍历
19+
### 二叉树的遍历
1920

2021
+ No.113: [cpp](cpp/113.cpp) [python](python/113.py)
2122

@@ -37,8 +38,12 @@ No.136 [cpp](cpp/136.cpp)
3738

3839
## 前缀和/树状数组
3940

40-
No.303 [cpp](cpp/303.cpp)
41-
No.307 [cpp](cpp/307.cpp)
41+
+ No.303 [cpp](cpp/303.cpp)
42+
+ No.307 [cpp](cpp/307.cpp)
43+
44+
## 二分
45+
46+
+ No.128 [cpp](cpp/128.cpp) [python](python/128.py)
4247

4348
### 剑指offer系列
4449

cpp/1283.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <algorithm>
2+
#include <vector>
3+
using namespace std;
4+
5+
class Solution {
6+
public:
7+
int smallestDivisor(vector<int>& nums, int threshold) {
8+
int end = *max_element(nums.cbegin(), nums.cend());
9+
int begin = 1;
10+
int mid, _sum, res = -1;
11+
while (end > begin) {
12+
mid = (end - begin)/2 + begin;
13+
_sum = 0;
14+
for (int num: nums) {
15+
_sum += (num - 1 + mid)/mid;
16+
}
17+
18+
if (_sum > threshold) {
19+
begin = mid+1;
20+
} else {
21+
end = mid;
22+
}
23+
}
24+
return end;
25+
26+
}
27+
28+
29+
};

cpp/64.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public:
3+
int sumNums(int n) {
4+
int sum = 0;
5+
_sum(n, sum);
6+
return sum;
7+
}
8+
int _sum(int n, int &sum) {
9+
sum += n;
10+
return n && _sum(n-1, sum);
11+
}
12+
};

python/1283.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def smallestDivisor(self, nums: List[int], threshold: int) -> int:
3+
begin, end = 1, max(nums)+1
4+
while begin < end:
5+
mid = (end - begin)//2 + begin
6+
_sum = 0
7+
for num in nums:
8+
_sum += (num + mid - 1) // mid
9+
if _sum <= threshold:
10+
end = mid
11+
else:
12+
begin = mid + 1
13+
return end

python/64.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def sumNums(self, n: int) -> int:
3+
"""
4+
使用and运算符短路
5+
"""
6+
sum_val = 0
7+
def _sum(n):
8+
nonlocal sum_val
9+
sum_val += n
10+
return n and _sum(n-1)
11+
_sum(n)
12+
return sum_val

0 commit comments

Comments
 (0)