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 49e1ab2

Browse files
Merge pull request youngyangyang04#2227 from niuli1991/master-18
添加0018.四数之和 Ruby实现
2 parents 93ebb97 + 6167408 commit 49e1ab2

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

‎problems/0018.四数之和.md‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,54 @@ object Solution {
649649
}
650650
}
651651
```
652+
### Ruby:
653+
654+
```ruby
655+
def four_sum(nums, target)
656+
#结果集
657+
result = []
658+
nums = nums.sort!
659+
660+
for i in 0..nums.size - 1
661+
return result if i > 0 && nums[i] > target && nums[i] >= 0
662+
#对a进行去重
663+
next if i > 0 && nums[i] == nums[i - 1]
664+
665+
for j in i + 1..nums.size - 1
666+
break if nums[i] + nums[j] > target && nums[i] + nums[j] >= 0
667+
#对b进行去重
668+
next if j > i + 1 && nums[j] == nums[j - 1]
669+
left = j + 1
670+
right = nums.size - 1
671+
while left < right
672+
sum = nums[i] + nums[j] + nums[left] + nums[right]
673+
if sum > target
674+
right -= 1
675+
elsif sum < target
676+
left += 1
677+
else
678+
result << [nums[i], nums[j], nums[left], nums[right]]
679+
680+
#对c进行去重
681+
while left < right && nums[left] == nums[left + 1]
682+
left += 1
683+
end
684+
685+
#对d进行去重
686+
while left < right && nums[right] == nums[right - 1]
687+
right -= 1
688+
end
689+
690+
right -= 1
691+
left += 1
692+
end
693+
end
694+
end
695+
end
696+
697+
return result
698+
end
699+
```
652700
<p align="center">
653701
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
654702
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>

0 commit comments

Comments
(0)

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