mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
添加0018.四数之和 Ruby实现
This commit is contained in:
@ -649,6 +649,54 @@ object Solution {
|
||||
}
|
||||
}
|
||||
```
|
||||
### Ruby:
|
||||
|
||||
```ruby
|
||||
def four_sum(nums, target)
|
||||
#结果集
|
||||
result = []
|
||||
nums = nums.sort!
|
||||
|
||||
for i in 0..nums.size - 1
|
||||
return result if i > 0 && nums[i] > target && nums[i] >= 0
|
||||
#对a进行去重
|
||||
next if i > 0 && nums[i] == nums[i - 1]
|
||||
|
||||
for j in i + 1..nums.size - 1
|
||||
break if nums[i] + nums[j] > target && nums[i] + nums[j] >= 0
|
||||
#对b进行去重
|
||||
next if j > i + 1 && nums[j] == nums[j - 1]
|
||||
left = j + 1
|
||||
right = nums.size - 1
|
||||
while left < right
|
||||
sum = nums[i] + nums[j] + nums[left] + nums[right]
|
||||
if sum > target
|
||||
right -= 1
|
||||
elsif sum < target
|
||||
left += 1
|
||||
else
|
||||
result << [nums[i], nums[j], nums[left], nums[right]]
|
||||
|
||||
#对c进行去重
|
||||
while left < right && nums[left] == nums[left + 1]
|
||||
left += 1
|
||||
end
|
||||
|
||||
#对d进行去重
|
||||
while left < right && nums[right] == nums[right - 1]
|
||||
right -= 1
|
||||
end
|
||||
|
||||
right -= 1
|
||||
left += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
```
|
||||
<p align="center">
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
|
Reference in New Issue
Block a user