@@ -9,15 +9,15 @@ class Solution {
99 val m = 2 * n
1010 val events = createEvents(squares, m)
1111 val xsRaw = createXsRaw(squares, m)
12- events.sortWith<Event ? > { a, b: Event ? -> a!! .y.compareTo(b!! .y) }
12+ events.sortWith<Event > { a, b: Event -> a.y.compareTo(b.y) }
1313 val xs = compress(xsRaw)
1414 val totalUnionArea = calculateTotalUnionArea(events, xs, m)
1515 val target = totalUnionArea / 2.0
1616 return findSplitPoint(events, xs, m, target)
1717 }
1818
19- private fun createEvents (squares : Array <IntArray >, m : Int ): Array <Event ? > {
20- val events = arrayOfNulls< Event > (m)
19+ private fun createEvents (squares : Array <IntArray >, m : Int ): Array <Event > {
20+ val events = Array (m) { Event ( 0.0 , 0.0 , 0.0 , 0 ) }
2121 var idx = 0
2222 for (sq in squares) {
2323 val x = sq[0 ].toDouble()
@@ -43,34 +43,34 @@ class Solution {
4343 return xsRaw
4444 }
4545
46- private fun calculateTotalUnionArea (events : Array <Event ? >, xs : DoubleArray , m : Int ): Double {
46+ private fun calculateTotalUnionArea (events : Array <Event >, xs : DoubleArray , m : Int ): Double {
4747 val segTree = SegmentTree (xs)
4848 var totalUnionArea = 0.0
49- var lastY = events[0 ]!! .y
49+ var lastY = events[0 ].y
5050 var i = 0
5151 while (i < m) {
52- val curY = events[i]!! .y
52+ val curY = events[i].y
5353 if (curY > lastY) {
5454 val unionX = segTree.query()
5555 totalUnionArea + = unionX * (curY - lastY)
5656 lastY = curY
5757 }
58- while (i < m && events[i]!! .y == curY) {
59- val indices = findIndices(xs, events[i]!! )
60- segTree.update(1 , 0 , xs.size - 1 , indices[0 ], indices[1 ], events[i]!! .type)
58+ while (i < m && events[i].y == curY) {
59+ val indices = findIndices(xs, events[i])
60+ segTree.update(1 , 0 , xs.size - 1 , indices[0 ], indices[1 ], events[i].type)
6161 i++
6262 }
6363 }
6464 return totalUnionArea
6565 }
6666
67- private fun findSplitPoint (events : Array <Event ? >, xs : DoubleArray , m : Int , target : Double ): Double {
67+ private fun findSplitPoint (events : Array <Event >, xs : DoubleArray , m : Int , target : Double ): Double {
6868 val segTree = SegmentTree (xs)
69- var lastY = events[0 ]!! .y
69+ var lastY = events[0 ].y
7070 var cumArea = 0.0
7171 var i = 0
7272 while (i < m) {
73- val curY = events[i]!! .y
73+ val curY = events[i].y
7474 if (curY > lastY) {
7575 val unionX = segTree.query()
7676 val dy = curY - lastY
@@ -80,9 +80,9 @@ class Solution {
8080 cumArea + = unionX * dy
8181 lastY = curY
8282 }
83- while (i < m && events[i]!! .y == curY) {
84- val indices = findIndices(xs, events[i]!! )
85- segTree.update(1 , 0 , xs.size - 1 , indices[0 ], indices[1 ], events[i]!! .type)
83+ while (i < m && events[i].y == curY) {
84+ val indices = findIndices(xs, events[i])
85+ segTree.update(1 , 0 , xs.size - 1 , indices[0 ], indices[1 ], events[i].type)
8686 i++
8787 }
8888 }
0 commit comments