mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
添加 0018.四数之和.md Scala版本
This commit is contained in:
@ -522,6 +522,49 @@ public class Solution
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Scala:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
// 导包
|
||||||
|
import scala.collection.mutable.ListBuffer
|
||||||
|
import scala.util.control.Breaks.{break, breakable}
|
||||||
|
def fourSum(nums: Array[Int], target: Int): List[List[Int]] = {
|
||||||
|
val res = ListBuffer[List[Int]]()
|
||||||
|
val nums_tmp = nums.sorted // 先排序
|
||||||
|
for (i <- nums_tmp.indices) {
|
||||||
|
breakable {
|
||||||
|
if (i > 0 && nums_tmp(i) == nums_tmp(i - 1)) {
|
||||||
|
break // 如果该值和上次的值相同,跳过本次循环,相当于continue
|
||||||
|
} else {
|
||||||
|
for (j <- i + 1 until nums_tmp.length) {
|
||||||
|
breakable {
|
||||||
|
if (j > i + 1 && nums_tmp(j) == nums_tmp(j - 1)) {
|
||||||
|
break // 同上
|
||||||
|
} else {
|
||||||
|
// 双指针
|
||||||
|
var (left, right) = (j + 1, nums_tmp.length - 1)
|
||||||
|
while (left < right) {
|
||||||
|
var sum = nums_tmp(i) + nums_tmp(j) + nums_tmp(left) + nums_tmp(right)
|
||||||
|
if (sum == target) {
|
||||||
|
// 满足要求,直接加入到集合里面去
|
||||||
|
res += List(nums_tmp(i), nums_tmp(j), nums_tmp(left), nums_tmp(right))
|
||||||
|
while (left < right && nums_tmp(left) == nums_tmp(left + 1)) left += 1
|
||||||
|
while (left < right && nums_tmp(right) == nums_tmp(right - 1)) right -= 1
|
||||||
|
left += 1
|
||||||
|
right -= 1
|
||||||
|
} else if (sum < target) left += 1
|
||||||
|
else right -= 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 最终返回的res要转换为List,return关键字可以省略
|
||||||
|
res.toList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
Reference in New Issue
Block a user