Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b469947

Browse files
committed
feat: add solutions to lc problem: No.1283
No.1283.Find the Smallest Divisor Given a Threshold
1 parent 3ef01ae commit b469947

File tree

8 files changed

+220
-101
lines changed

8 files changed

+220
-101
lines changed

‎solution/1200-1299/1283.Find the Smallest Divisor Given a Threshold/README.md‎

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,10 @@
6464
```python
6565
class Solution:
6666
def smallestDivisor(self, nums: List[int], threshold: int) -> int:
67-
left, right = 1, 1000000
67+
left, right = 1, 10**6
6868
while left < right:
6969
mid = (left + right) >> 1
70-
s = 0
71-
for num in nums:
72-
s += (num + mid - 1) // mid
70+
s = sum((v + mid - 1) // mid for v in nums)
7371
if s <= threshold:
7472
right = mid
7573
else:
@@ -88,8 +86,8 @@ class Solution {
8886
while (left < right) {
8987
int mid = (left + right) >> 1;
9088
int s = 0;
91-
for (int num : nums) {
92-
s += (num + mid - 1) / mid;
89+
for (int v : nums) {
90+
s += (v + mid - 1) / mid;
9391
}
9492
if (s <= threshold) {
9593
right = mid;
@@ -108,18 +106,14 @@ class Solution {
108106
class Solution {
109107
public:
110108
int smallestDivisor(vector<int>& nums, int threshold) {
111-
int left = 1, right = 1000000;
112-
while (left < right) {
113-
int mid = left + right >> 1;
109+
int left = 1, right = 1e6;
110+
while (left < right)
111+
{
112+
int mid = (left + right) >> 1;
114113
int s = 0;
115-
for (int& num : nums) {
116-
s += (num + mid - 1) / mid;
117-
}
118-
if (s <= threshold) {
119-
right = mid;
120-
} else {
121-
left = mid + 1;
122-
}
114+
for (int& v : nums) s += (v + mid - 1) / mid;
115+
if (s <= threshold) right = mid;
116+
else left = mid + 1;
123117
}
124118
return left;
125119
}
@@ -134,8 +128,8 @@ func smallestDivisor(nums []int, threshold int) int {
134128
for left < right {
135129
mid := (left + right) >> 1
136130
s := 0
137-
for _, num := range nums {
138-
s += (num + mid - 1) / mid
131+
for _, v := range nums {
132+
s += (v + mid - 1) / mid
139133
}
140134
if s <= threshold {
141135
right = mid
@@ -147,6 +141,55 @@ func smallestDivisor(nums []int, threshold int) int {
147141
}
148142
```
149143

144+
### **JavaScript**
145+
146+
```js
147+
/**
148+
* @param {number[]} nums
149+
* @param {number} threshold
150+
* @return {number}
151+
*/
152+
var smallestDivisor = function (nums, threshold) {
153+
let left = 1,
154+
right = 1000000;
155+
while (left < right) {
156+
const mid = (left + right) >> 1;
157+
let s = 0;
158+
for (let v of nums) {
159+
s += Math.ceil(v / mid);
160+
}
161+
if (s <= threshold) {
162+
right = mid;
163+
} else {
164+
left = mid + 1;
165+
}
166+
}
167+
return left;
168+
};
169+
```
170+
171+
### **TypeScript**
172+
173+
```ts
174+
function smallestDivisor(nums: number[], threshold: number): number {
175+
let left = 1,
176+
right = 1000000;
177+
while (left < right) {
178+
const mid = (left + right) >> 1;
179+
let s = 0;
180+
for (let v of nums) {
181+
s += Math.ceil(v / mid);
182+
}
183+
if (s <= threshold) {
184+
right = mid;
185+
} else {
186+
left = mid + 1;
187+
}
188+
}
189+
return left;
190+
}
191+
```
192+
150193
### **...**
151194

152195
```

‎solution/1200-1299/1283.Find the Smallest Divisor Given a Threshold/README_EN.md‎

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,10 @@ If the divisor is 4 we can get a sum of 7 (1+1+2+3) and if the divisor is 5 the
4545
```python
4646
class Solution:
4747
def smallestDivisor(self, nums: List[int], threshold: int) -> int:
48-
left, right = 1, 1000000
48+
left, right = 1, 10**6
4949
while left < right:
5050
mid = (left + right) >> 1
51-
s = 0
52-
for num in nums:
53-
s += (num + mid - 1) // mid
51+
s = sum((v + mid - 1) // mid for v in nums)
5452
if s <= threshold:
5553
right = mid
5654
else:
@@ -67,8 +65,8 @@ class Solution {
6765
while (left < right) {
6866
int mid = (left + right) >> 1;
6967
int s = 0;
70-
for (int num : nums) {
71-
s += (num + mid - 1) / mid;
68+
for (int v : nums) {
69+
s += (v + mid - 1) / mid;
7270
}
7371
if (s <= threshold) {
7472
right = mid;
@@ -87,18 +85,14 @@ class Solution {
8785
class Solution {
8886
public:
8987
int smallestDivisor(vector<int>& nums, int threshold) {
90-
int left = 1, right = 1000000;
91-
while (left < right) {
92-
int mid = left + right >> 1;
88+
int left = 1, right = 1e6;
89+
while (left < right)
90+
{
91+
int mid = (left + right) >> 1;
9392
int s = 0;
94-
for (int& num : nums) {
95-
s += (num + mid - 1) / mid;
96-
}
97-
if (s <= threshold) {
98-
right = mid;
99-
} else {
100-
left = mid + 1;
101-
}
93+
for (int& v : nums) s += (v + mid - 1) / mid;
94+
if (s <= threshold) right = mid;
95+
else left = mid + 1;
10296
}
10397
return left;
10498
}
@@ -113,8 +107,8 @@ func smallestDivisor(nums []int, threshold int) int {
113107
for left < right {
114108
mid := (left + right) >> 1
115109
s := 0
116-
for _, num := range nums {
117-
s += (num + mid - 1) / mid
110+
for _, v := range nums {
111+
s += (v + mid - 1) / mid
118112
}
119113
if s <= threshold {
120114
right = mid
@@ -126,6 +120,55 @@ func smallestDivisor(nums []int, threshold int) int {
126120
}
127121
```
128122

123+
### **JavaScript**
124+
125+
```js
126+
/**
127+
* @param {number[]} nums
128+
* @param {number} threshold
129+
* @return {number}
130+
*/
131+
var smallestDivisor = function (nums, threshold) {
132+
let left = 1,
133+
right = 1000000;
134+
while (left < right) {
135+
const mid = (left + right) >> 1;
136+
let s = 0;
137+
for (let v of nums) {
138+
s += Math.ceil(v / mid);
139+
}
140+
if (s <= threshold) {
141+
right = mid;
142+
} else {
143+
left = mid + 1;
144+
}
145+
}
146+
return left;
147+
};
148+
```
149+
150+
### **TypeScript**
151+
152+
```ts
153+
function smallestDivisor(nums: number[], threshold: number): number {
154+
let left = 1,
155+
right = 1000000;
156+
while (left < right) {
157+
const mid = (left + right) >> 1;
158+
let s = 0;
159+
for (let v of nums) {
160+
s += Math.ceil(v / mid);
161+
}
162+
if (s <= threshold) {
163+
right = mid;
164+
} else {
165+
left = mid + 1;
166+
}
167+
}
168+
return left;
169+
}
170+
```
171+
129172
### **...**
130173

131174
```
Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
1-
class Solution {
2-
public:
3-
int smallestDivisor(vector<int>& nums, int threshold) {
4-
int left = 1, right = 1000000;
5-
while (left < right) {
6-
int mid = left + right >> 1;
7-
int s = 0;
8-
for (int& num : nums) {
9-
s += (num + mid - 1) / mid;
10-
}
11-
if (s <= threshold) {
12-
right = mid;
13-
} else {
14-
left = mid + 1;
15-
}
16-
}
17-
return left;
18-
}
1+
class Solution {
2+
public:
3+
int smallestDivisor(vector<int>& nums, int threshold) {
4+
int left = 1, right = 1e6;
5+
while (left < right)
6+
{
7+
int mid = (left + right) >> 1;
8+
int s = 0;
9+
for (int& v : nums) s += (v + mid - 1) / mid;
10+
if (s <= threshold) right = mid;
11+
else left = mid + 1;
12+
}
13+
return left;
14+
}
1915
};
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
func smallestDivisor(nums []int, threshold int) int {
2-
left, right := 1, 1000000
3-
for left < right {
4-
mid := (left + right) >> 1
5-
s := 0
6-
for _, num := range nums {
7-
s += (num + mid - 1) / mid
8-
}
9-
if s <= threshold {
10-
right = mid
11-
} else {
12-
left = mid + 1
13-
}
14-
}
15-
return left
1+
func smallestDivisor(nums []int, threshold int) int {
2+
left, right := 1, 1000000
3+
for left < right {
4+
mid := (left + right) >> 1
5+
s := 0
6+
for _, v := range nums {
7+
s += (v + mid - 1) / mid
8+
}
9+
if s <= threshold {
10+
right = mid
11+
} else {
12+
left = mid + 1
13+
}
14+
}
15+
return left
1616
}
Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
class Solution {
2-
public int smallestDivisor(int[] nums, int threshold) {
3-
int left = 1, right = 1000000;
4-
while (left < right) {
5-
int mid = (left + right) >> 1;
6-
int s = 0;
7-
for (int num : nums) {
8-
s += (num + mid - 1) / mid;
9-
}
10-
if (s <= threshold) {
11-
right = mid;
12-
} else {
13-
left = mid + 1;
14-
}
15-
}
16-
return left;
17-
}
1+
class Solution {
2+
public int smallestDivisor(int[] nums, int threshold) {
3+
int left = 1, right = 1000000;
4+
while (left < right) {
5+
int mid = (left + right) >> 1;
6+
int s = 0;
7+
for (int v : nums) {
8+
s += (v + mid - 1) / mid;
9+
}
10+
if (s <= threshold) {
11+
right = mid;
12+
} else {
13+
left = mid + 1;
14+
}
15+
}
16+
return left;
17+
}
1818
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} threshold
4+
* @return {number}
5+
*/
6+
var smallestDivisor = function (nums, threshold) {
7+
let left = 1,
8+
right = 1000000;
9+
while (left < right) {
10+
const mid = (left + right) >> 1;
11+
let s = 0;
12+
for (let v of nums) {
13+
s += Math.ceil(v / mid);
14+
}
15+
if (s <= threshold) {
16+
right = mid;
17+
} else {
18+
left = mid + 1;
19+
}
20+
}
21+
return left;
22+
};
Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
class Solution:
2-
def smallestDivisor(self, nums: List[int], threshold: int) -> int:
3-
left, right = 1, 1000000
4-
while left < right:
5-
mid = (left + right) >> 1
6-
s = 0
7-
for num in nums:
8-
s += (num + mid - 1) // mid
9-
if s <= threshold:
10-
right = mid
11-
else:
12-
left = mid + 1
13-
return left
1+
class Solution:
2+
def smallestDivisor(self, nums: List[int], threshold: int) -> int:
3+
left, right = 1, 10**6
4+
while left < right:
5+
mid = (left + right) >> 1
6+
s = sum((v + mid - 1) // mid for v in nums)
7+
if s <= threshold:
8+
right = mid
9+
else:
10+
left = mid + 1
11+
return left

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /