classSolution { funcmaxArea(_height: [Int]) -> Int { var maxArea =0 var left =0 var right = height.count -1 while left < right { let currentArea =min(height[left], height[right]) * (right - left) maxArea =max(maxArea, currentArea) if height[left] < height[right] { left +=1 } else { right -=1 } } return maxArea } }
结果
执行用时 : 628 ms, 击败 5.38% 使用 Swift 的用户
内存消耗 : 19.45 MB, 击败 5.38% 使用 Swift 的用户
Kotlin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
classSolution { funmaxArea(height: IntArray): Int { var maxArea = 0 var left = 0 var right = height.size - 1 while (left < right) { val currentArea = minOf(height[left], height[right]) * (right - left) maxArea = maxOf(maxArea, currentArea) if (height[left] < height[right]) { left++ } else { right-- } } return maxArea } }
结果
执行用时 : 400 ms, 击败 45.71% 使用 Kotlin 的用户
内存消耗 : 51.34 MB, 击败 68.57% 使用 Kotlin 的用户
Dart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution{ int maxArea(List<int> height) { int maxArea = 0; int left = 0; int right = height.length - 1; while (left < right) { int currentArea = height[left] < height[right] ? height[left] * (right - left) : height[right] * (right - left); maxArea = currentArea > maxArea ? currentArea : maxArea; if (height[left] < height[right]) { left++; } else { right--; } } return maxArea; } }
结果
执行用时 : 332 ms, 击败 22.22% 使用 Dart 的用户
内存消耗 : 167.73 MB, 击败 100.00% 使用 Dart 的用户
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
funcmaxArea(height []int)int { maxArea := 0 left := 0 right := len(height) - 1 for left < right { currentArea := min(height[left], height[right]) * (right - left) if currentArea > maxArea { maxArea = currentArea } if height[left] < height[right] { left++ } else { right-- } } return maxArea }
结果
执行用时 : 76 ms, 击败 20.43% 使用 Go 的用户
内存消耗 : 8.11 MB, 击败 48.25% 使用 Go 的用户
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# @param {Integer[]} height # @return {Integer} defmax_area(height) max_area = 0 left = 0 right = height.length - 1 while left < right current_area = [height[left], height[right]].min * (right - left) max_area = [max_area, current_area].max if height[left] < height[right] left += 1 else right -= 1 end end max_area end
结果
执行用时 : 128 ms, 击败 85.71% 使用 Ruby 的用户
内存消耗 : 213.06 MB, 击败 14.29% 使用 Ruby 的用户
Scala
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
objectSolution{ defmaxArea(height: Array[Int]): Int = { var maxArea = 0 var left = 0 var right = height.length - 1 while (left < right) { val currentArea = math.min(height(left), height(right)) * (right - left) maxArea = math.max(maxArea, currentArea) if (height(left) < height(right)) { left += 1 } else { right -= 1 } } maxArea } }
结果
执行用时 : 706 ms, 击败 28.57% 使用 Scala 的用户
内存消耗 : 75.38 MB, 击败 76.19% 使用 Scala 的用户
Rust
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
implSolution { pubfnmax_area(height: Vec<i32>) ->i32 { letmut max_area = 0; letmut left = 0; letmut right = height.len() - 1; while left < right { letcurrent_area = std::cmp::min(height[left], height[right]) * (right - left) asi32; max_area = std::cmp::max(max_area, current_area); if height[left] < height[right] { left += 1; } else { right -= 1; } } max_area } }