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

Commitdc54cc8

Browse files
committed
Update all yesterday (Mar 26)'s solution changes.
1 parentc26f2c0 commitdc54cc8

File tree

37 files changed

+3240
-28
lines changed

37 files changed

+3240
-28
lines changed

‎en/1-1000/1-two-sum.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Original link: [leetcoder.net - LeetCoder: Fucking Good LeetCode Solutions](http
22

33
#1. Two Sum - LeetCoder: Fucking Good LeetCode Solutions
44

5-
LeetCode link:[1. Two Sum](https://leetcode.com/problems/two-sum),Difficulty:**Easy**.
5+
LeetCode link:[1. Two Sum](https://leetcode.com/problems/two-sum),difficulty:**Easy**.
66

77
##LeetCode description of "1. Two Sum"
88

‎en/1-1000/15-3sum.md

Lines changed: 303 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Original link: [leetcoder.net - LeetCoder: Fucking Good LeetCode Solutions](http
22

33
#15. 3Sum - LeetCoder: Fucking Good LeetCode Solutions
44

5-
LeetCode link:[15. 3Sum](https://leetcode.com/problems/3sum),Difficulty:**Medium**.
5+
LeetCode link:[15. 3Sum](https://leetcode.com/problems/3sum),difficulty:**Medium**.
66

77
##LeetCode description of "15. 3Sum"
88

@@ -140,6 +140,308 @@ class Solution:
140140
return list(results)
141141
```
142142

143+
## Ruby
144+
145+
```ruby
146+
# @param {Integer[]} nums
147+
# @return {Integer[][]}
148+
def three_sum(nums)
149+
nums.sort!
150+
results = Set.new
151+
152+
nums_2 = []
153+
nums.each_with_index do |num, i|
154+
next if i >= 3 && num == nums[i - 1] && num == nums[i - 2] && num == nums[i - 3]
155+
nums_2.append(num)
156+
end
157+
158+
nums = nums_2
159+
160+
# Iterate through each number as potential first element
161+
(0...nums.length - 2).each do |i|
162+
break if nums[i] > 0
163+
164+
left = i + 1
165+
right = nums.length - 1
166+
167+
# Two-pointer approach for remaining elements
168+
while left < right
169+
current_sum = nums[i] + nums[left] + nums[right]
170+
if current_sum == 0
171+
# Add sorted triplet to avoid duplicates
172+
results.add([nums[i], nums[left], nums[right]])
173+
left += 1
174+
right -= 1
175+
elsif current_sum < 0
176+
left += 1 # Need larger sum
177+
else
178+
right -= 1 # Need smaller sum
179+
end
180+
end
181+
end
182+
183+
results.to_a
184+
end
185+
```
186+
187+
## Go
188+
189+
```go
190+
func threeSum(nums []int) [][]int {
191+
sort.Ints(nums)
192+
193+
nums2 := make([]int, 0)
194+
for i, num := range nums {
195+
if i >= 3 && num == nums[i-1] && nums[i-1] == nums[i-2] && nums[i-2] == nums[i-3] {
196+
continue
197+
}
198+
nums2 = append(nums2, num)
199+
}
200+
201+
nums = nums2
202+
results := make([][]int, 0)
203+
seen := make(map[string]bool)
204+
205+
for i := 0; i < len(nums)-2; i++ {
206+
// if nums[i] > 0 {
207+
// break
208+
// }
209+
210+
left := i + 1
211+
right := len(nums) - 1
212+
213+
for left < right {
214+
sum := nums[left] + nums[right]
215+
if sum == -nums[i] {
216+
triplet := []int{nums[i], nums[left], nums[right]}
217+
key := fmt.Sprintf("%d,%d,%d", triplet[0], triplet[1], triplet[2])
218+
if !seen[key] {
219+
results = append(results, triplet)
220+
seen[key] = true
221+
}
222+
left++
223+
} else if sum > -nums[i] {
224+
right--
225+
} else {
226+
left++
227+
}
228+
}
229+
}
230+
231+
return results
232+
}
233+
```
234+
235+
##C++
236+
237+
```cpp
238+
class Solution {
239+
public:
240+
vector<vector<int>> threeSum(vector<int>& nums) {
241+
sort(nums.begin(), nums.end());
242+
243+
// Uncomment to speed up
244+
// vector<int> nums2;
245+
// for (int i = 0; i < nums.size(); i++) {
246+
// if (i >= 3 && nums[i] == nums[i-1] && nums[i-1] == nums[i-2] &&
247+
// nums[i-2] == nums[i-3]) {
248+
// continue;
249+
// }
250+
// nums2.push_back(nums[i]);
251+
// }
252+
// nums = nums2;
253+
254+
vector<vector<int>> results;
255+
set<vector<int>> seen;
256+
257+
for (int i = 0; i < nums.size() - 2; i++) {
258+
// Uncomment to speed up
259+
// if (nums[i] > 0) {
260+
// break;
261+
// }
262+
int left = i + 1;
263+
int right = nums.size() - 1;
264+
265+
while (left < right) {
266+
int sum = nums[left] + nums[right];
267+
268+
if (sum == -nums[i]) {
269+
vector<int> triplet = {nums[i], nums[left], nums[right]};
270+
271+
if (seen.find(triplet) == seen.end()) {
272+
results.push_back(triplet);
273+
seen.insert(triplet);
274+
}
275+
276+
left++;
277+
} else if (sum > -nums[i]) {
278+
right--;
279+
} else {
280+
left++;
281+
}
282+
}
283+
}
284+
285+
return results;
286+
}
287+
};
288+
```
289+
290+
## JavaScript
291+
292+
```javascript
293+
/**
294+
* @param {number[]} nums
295+
* @return {number[][]}
296+
*/
297+
var threeSum = function(nums) {
298+
nums.sort((a, b) => a - b);
299+
300+
// Uncomment to speed up
301+
// let nums2 = [];
302+
// for (let i = 0; i < nums.length; i++) {
303+
// if (i >= 3 && nums[i] === nums[i-1] && nums[i-1] === nums[i-2] && nums[i-2] === nums[i-3]) {
304+
// continue;
305+
// }
306+
// nums2.push(nums[i]);
307+
// }
308+
// nums = nums2;
309+
310+
const results = [];
311+
const seen = new Set();
312+
313+
for (let i = 0; i < nums.length - 2; i++) {
314+
// Uncomment to speed up
315+
// if (nums[i] > 0) {
316+
// break;
317+
// }
318+
let left = i + 1;
319+
let right = nums.length - 1;
320+
321+
while (left < right) {
322+
const sum = nums[left] + nums[right];
323+
324+
if (sum === -nums[i]) {
325+
const triplet = [nums[i], nums[left], nums[right]];
326+
const key = triplet.join(',');
327+
if (!seen.has(key)) {
328+
results.push(triplet);
329+
seen.add(key);
330+
}
331+
left++;
332+
} else if (sum > -nums[i]) {
333+
right--;
334+
} else {
335+
left++;
336+
}
337+
}
338+
}
339+
340+
return results;
341+
};
342+
```
343+
344+
##C#
345+
346+
```csharp
347+
public class Solution {
348+
public IList<IList<int>> ThreeSum(int[] nums) {
349+
Array.Sort(nums);
350+
351+
// Uncomment to speed up
352+
// var nums2 = new List<int>();
353+
// for (int i = 0; i < nums.Length; i++) {
354+
// if (i >= 3 && nums[i] == nums[i-1] && nums[i-1] == nums[i-2] && nums[i-2] == nums[i-3]) {
355+
// continue;
356+
// }
357+
// nums2.Add(nums[i]);
358+
// }
359+
// nums = nums2.ToArray();
360+
361+
var results = new List<IList<int>>();
362+
var seen = new HashSet<string>();
363+
364+
for (int i = 0; i < nums.Length - 2; i++) {
365+
// Uncomment to speed up
366+
// if (nums[i] > 0) {
367+
// break;
368+
// }
369+
int left = i + 1;
370+
int right = nums.Length - 1;
371+
372+
while (left < right) {
373+
int sum = nums[left] + nums[right];
374+
if (sum == -nums[i]) {
375+
var triplet = new List<int> { nums[i], nums[left], nums[right] };
376+
string key = string.Join(",", triplet);
377+
if (!seen.Contains(key)) {
378+
results.Add(triplet);
379+
seen.Add(key);
380+
}
381+
left++;
382+
} else if (sum > -nums[i]) {
383+
right--;
384+
} else {
385+
left++;
386+
}
387+
}
388+
}
389+
390+
return results;
391+
}
392+
}
393+
```
394+
395+
## Java
396+
397+
```java
398+
class Solution {
399+
public List<List<Integer>> threeSum(int[] nums) {
400+
Arrays.sort(nums);
401+
402+
// Uncomment to speed up
403+
// List<Integer> nums2 = new ArrayList<>();
404+
// for (int i = 0; i < nums.length; i++) {
405+
// if (i >= 3 && nums[i] == nums[i-1] && nums[i-1] == nums[i-2] && nums[i-2] == nums[i-3]) {
406+
// continue;
407+
// }
408+
// nums2.add(nums[i]);
409+
// }
410+
// nums = nums2.stream().mapToInt(i -> i).toArray();
411+
412+
List<List<Integer>> results = new ArrayList<>();
413+
var seen = new HashSet<>();
414+
415+
for (int i = 0; i < nums.length - 2; i++) {
416+
// Uncomment to speed up
417+
// if (nums[i] > 0) {
418+
// break;
419+
// }
420+
int left = i + 1;
421+
int right = nums.length - 1;
422+
423+
while (left < right) {
424+
int sum = nums[left] + nums[right];
425+
if (sum == -nums[i]) {
426+
List<Integer> triplet = Arrays.asList(nums[i], nums[left], nums[right]);
427+
if (!seen.contains(triplet)) {
428+
results.add(triplet);
429+
seen.add(triplet);
430+
}
431+
left++;
432+
} else if (sum > -nums[i]) {
433+
right--;
434+
} else {
435+
left++;
436+
}
437+
}
438+
}
439+
440+
return results;
441+
}
442+
}
443+
```
444+
143445
## Other languages
144446

145447
```java

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp