Movatterモバイル変換


[0]ホーム

URL:


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

Commitde6c6a9

Browse files
authored
Sri Hari: Batch-4/Neetcode-All/Added-articles (neetcode-gh#3777)
* Batch-4/Neetcode-All/Added-articles* Batch-4/Neetcode-All/Added-articles
1 parent6af8812 commitde6c6a9

12 files changed

+5897
-3
lines changed

‎articles/4sum.md

Lines changed: 647 additions & 0 deletions
Large diffs are not rendered by default.

‎articles/arithmetic-slices-ii-subsequence.md

Lines changed: 499 additions & 0 deletions
Large diffs are not rendered by default.

‎articles/boats-to-save-people.md

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
##1. Sorting + Two Pointers
2+
3+
::tabs-start
4+
5+
```python
6+
classSolution:
7+
defnumRescueBoats(self,people: List[int],limit:int) ->int:
8+
people.sort()
9+
res, l, r=0,0,len(people)-1
10+
while l<= r:
11+
remain= limit- people[r]
12+
r-=1
13+
res+=1
14+
if l<= rand remain>= people[l]:
15+
l+=1
16+
return res
17+
```
18+
19+
```java
20+
publicclassSolution {
21+
publicintnumRescueBoats(int[]people,intlimit) {
22+
Arrays.sort(people);
23+
int res=0, l=0, r= people.length-1;
24+
while (l<= r) {
25+
int remain= limit- people[r--];
26+
res++;
27+
if (l<= r&& remain>= people[l]) {
28+
l++;
29+
}
30+
}
31+
return res;
32+
}
33+
}
34+
```
35+
36+
```cpp
37+
classSolution {
38+
public:
39+
int numRescueBoats(vector<int>& people, int limit) {
40+
sort(people.begin(), people.end());
41+
int res = 0, l = 0, r = people.size() - 1;
42+
while (l <= r) {
43+
int remain = limit - people[r--];
44+
res++;
45+
if (l <= r && remain >= people[l]) {
46+
l++;
47+
}
48+
}
49+
return res;
50+
}
51+
};
52+
```
53+
54+
```javascript
55+
class Solution {
56+
/**
57+
* @param {number[]} people
58+
* @param {number} limit
59+
* @return {number}
60+
*/
61+
numRescueBoats(people, limit) {
62+
people.sort((a, b) => a - b);
63+
let res = 0, l = 0, r = people.length - 1;
64+
while (l <= r) {
65+
let remain = limit - people[r--];
66+
res++;
67+
if (l <= r && remain >= people[l]) {
68+
l++;
69+
}
70+
}
71+
return res;
72+
}
73+
}
74+
```
75+
76+
::tabs-end
77+
78+
###Time & Space Complexity
79+
80+
* Time complexity: $O(n \log n)$
81+
* Space complexity: $O(1)$ or $O(n)$ depending on the sorting algorithm.
82+
83+
---
84+
85+
##2. Counting Sort
86+
87+
::tabs-start
88+
89+
```python
90+
classSolution:
91+
defnumRescueBoats(self,people: List[int],limit:int) ->int:
92+
m=max(people)
93+
count= [0]* (m+1)
94+
for pin people:
95+
count[p]+=1
96+
97+
idx, i=0,1
98+
while idx<len(people):
99+
while count[i]==0:
100+
i+=1
101+
people[idx]= i
102+
count[i]-=1
103+
idx+=1
104+
105+
res, l, r=0,0,len(people)-1
106+
while l<= r:
107+
remain= limit- people[r]
108+
r-=1
109+
res+=1
110+
if l<= rand remain>= people[l]:
111+
l+=1
112+
return res
113+
```
114+
115+
```java
116+
publicclassSolution {
117+
publicintnumRescueBoats(int[]people,intlimit) {
118+
int m=Arrays.stream(people).max().getAsInt();
119+
int[] count=newint[m+1];
120+
for (int p: people) {
121+
count[p]++;
122+
}
123+
124+
int idx=0, i=1;
125+
while (idx< people.length) {
126+
while (count[i]==0) {
127+
i++;
128+
}
129+
people[idx++]= i;
130+
count[i]--;
131+
}
132+
133+
int res=0, l=0, r= people.length-1;
134+
while (l<= r) {
135+
int remain= limit- people[r--];
136+
res++;
137+
if (l<= r&& remain>= people[l]) {
138+
l++;
139+
}
140+
}
141+
return res;
142+
}
143+
}
144+
```
145+
146+
```cpp
147+
classSolution {
148+
public:
149+
int numRescueBoats(vector<int>& people, int limit) {
150+
int m =*max_element(people.begin(), people.end());
151+
vector<int> count(m + 1, 0);
152+
for (int p : people) {
153+
count[p]++;
154+
}
155+
156+
int idx = 0, i = 1;
157+
while (idx < people.size()) {
158+
while (count[i] == 0) {
159+
i++;
160+
}
161+
people[idx++] = i;
162+
count[i]--;
163+
}
164+
165+
int res = 0, l = 0, r = people.size() - 1;
166+
while (l <= r) {
167+
int remain = limit - people[r--];
168+
res++;
169+
if (l <= r && remain >= people[l]) {
170+
l++;
171+
}
172+
}
173+
return res;
174+
}
175+
};
176+
```
177+
178+
```javascript
179+
class Solution {
180+
/**
181+
* @param {number[]} people
182+
* @param {number} limit
183+
* @return {number}
184+
*/
185+
numRescueBoats(people, limit) {
186+
const m = Math.max(...people);
187+
const count = new Array(m + 1).fill(0);
188+
for (const p of people) {
189+
count[p]++;
190+
}
191+
192+
let idx = 0, i = 1;
193+
while (idx < people.length) {
194+
while (count[i] === 0) {
195+
i++;
196+
}
197+
people[idx++] = i;
198+
count[i]--;
199+
}
200+
201+
let res = 0, l = 0, r = people.length - 1;
202+
while (l <= r) {
203+
const remain = limit - people[r--];
204+
res++;
205+
if (l <= r && remain >= people[l]) {
206+
l++;
207+
}
208+
}
209+
return res;
210+
}
211+
}
212+
```
213+
214+
::tabs-end
215+
216+
###Time & Space Complexity
217+
218+
* Time complexity: $O(n)$
219+
* Space complexity: $O(m)$
220+
221+
> Where $n$ is the size of the input arrayand $m$ is the maximum value in the array.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp