package com.android.record.maya.lib.ve
class Solution {
//[1,3]
//[2]
fun findMedianSortedArrays(nums1: IntArray, nums2: IntArray): Double {
if (nums1.isEmpty()) {
return if (nums2.size % 2 == 0) {
(nums2[nums2.size / 2] + nums2[nums2.size / 2 - 1]) / 2.0
} else {
nums2[nums2.size / 2].toDouble()
}
} else if (nums2.isEmpty()) {
return if (nums1.size % 2 == 0) {
(nums1[nums1.size / 2] + nums1[nums1.size / 2 - 1]) / 2.0
} else {
nums1[nums1.size / 2].toDouble()
}
}
var sum = nums1.size + nums2.size
var i = 0
var j = 0
var sumArray = IntArray(sum)
for (k in 0 until sum) {
if (i < nums1.size && j < nums2.size) {
if (nums1[i] < nums2[j]) {
sumArray[k] = nums1[i]
i++
} else {
sumArray[k] = nums2[j]
j++
}
} else if(i < nums1.size) {
sumArray[k] = nums1[i]
i++
} else if(j < nums2.size) {
sumArray[k] = nums2[j]
j++
} else {
break
}
}
return if (sum % 2 == 0) {
(sumArray[sum / 2] + sumArray[sum / 2 - 1]) / 2.0
} else {
sumArray[sum / 2].toDouble()
}
}
fun myAtoi(str: String): Int {
if (str.isEmpty() || str.isBlank()) {
return 0
}
var result = 0L
var acceptSign = true
var sign = ' '
for (i in 0 until str.length) {
if (str[i] == '-' && acceptSign && sign == ' ') {
sign = '-'
} else if((str[i] == '+' && acceptSign && sign == ' ')) {
sign = '+'
} else if((str[i] == ' ' && acceptSign && sign == ' ')) {
} else if (str[i] in '0'..'9') {
acceptSign = false
result = result * 10 + str[i].toString().toInt()
if (result > Int.MAX_VALUE) {
return if (sign == '-') Int.MIN_VALUE else Int.MAX_VALUE
} else if (result < Int.MIN_VALUE) {
return if (sign == '-') Int.MAX_VALUE else Int.MIN_VALUE
}
} else {
break
}
}
result *= if (sign == '-') -1 else 1
return when {
Int.MAX_VALUE < result -> Int.MAX_VALUE
Int.MIN_VALUE > result -> Int.MIN_VALUE
else -> result.toInt()
}
}
}
13. 罗马数字转整数 4.寻找两个有序数组的中位数
最新推荐文章于 2020-06-10 11:39:32 发布
830

被折叠的 条评论
为什么被折叠?



