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 发布