@@ -400,6 +400,54 @@ class Solution {
400
400
}
401
401
}
402
402
```
403
+ Scala:
404
+
405
+ 滑动窗口:
406
+ ``` scala
407
+ object Solution {
408
+ def minSubArrayLen (target : Int , nums : Array [Int ]): Int = {
409
+ var result = Int .MaxValue // 返回结果,默认最大值
410
+ var left = 0 // 慢指针,当sum>=target,向右移动
411
+ var sum = 0 // 窗口值的总和
412
+ for (right <- 0 until nums.length) {
413
+ sum += nums(right)
414
+ while (sum >= target) {
415
+ result = math.min(result, right - left + 1 ) // 产生新结果
416
+ sum -= nums(left) // 左指针移动,窗口总和减去左指针的值
417
+ left += 1 // 左指针向右移动
418
+ }
419
+ }
420
+ // 相当于三元运算符,return关键字可以省略
421
+ if (result == Int .MaxValue ) 0 else result
422
+ }
423
+ }
424
+ ```
425
+
426
+ 暴力解法:
427
+ ``` scala
428
+ object Solution {
429
+ def minSubArrayLen (target : Int , nums : Array [Int ]): Int = {
430
+ import scala .util .control .Breaks
431
+ var res = Int .MaxValue
432
+ var subLength = 0
433
+ for (i <- 0 until nums.length) {
434
+ var sum = 0
435
+ Breaks .breakable(
436
+ for (j <- i until nums.length) {
437
+ sum += nums(j)
438
+ if (sum >= target) {
439
+ subLength = j - i + 1
440
+ res = math.min(subLength, res)
441
+ Breaks .break()
442
+ }
443
+ }
444
+ )
445
+ }
446
+ // 相当于三元运算符
447
+ if (res == Int .MaxValue ) 0 else res
448
+ }
449
+ }
450
+ ```
403
451
404
452
-----------------------
405
453
<div align =" center " ><img src =https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width =500 > </img ></div >
0 commit comments