当前位置: 首页 > news >正文

余姚 网站建设网页策划案

余姚 网站建设,网页策划案,鞍山站,河北省建设机械会网站给你一个字符串数组 nums 和一个整数 k 。nums 中的每个字符串都表示一个不含前导零的整数。 返回 nums 中表示第 k 大整数的字符串。 注意:重复的数字在统计时会视为不同元素考虑。例如,如果 nums 是 ["1","2","2"]&am…

给你一个字符串数组 nums 和一个整数 k 。nums 中的每个字符串都表示一个不含前导零的整数。

返回 nums 中表示第 k 大整数的字符串。

注意:重复的数字在统计时会视为不同元素考虑。例如,如果 nums 是 ["1","2","2"],那么 "2" 是最大的整数,"2" 是第二大的整数,"1" 是第三大的整数。

示例 1:

输入:nums = ["3","6","7","10"], k = 4
输出:"3"
解释:
nums 中的数字按非递减顺序排列为 ["3","6","7","10"]
其中第 4 大整数是 "3"

示例 2:

输入:nums = ["2","21","12","1"], k = 3
输出:"2"
解释:
nums 中的数字按非递减顺序排列为 ["1","2","12","21"]
其中第 3 大整数是 "2"

示例 3:

输入:nums = ["0","0"], k = 2
输出:"0"
解释:
nums 中的数字按非递减顺序排列为 ["0","0"]
其中第 2 大整数是 "0"

提示:

  • 1 <= k <= nums.length <= 104
  • 1 <= nums[i].length <= 100
  • nums[i] 仅由数字组成
  • nums[i] 不含任何前导零

题解:当看到这个题目的时候,第一反应是将字符串转为整数,然后按照整数的大小进行排序,然后返回第K大的数字转为字符串结果就行了。 这个复杂度应该是O(nlgn)+O(M),其中n表示nums的长度,M表示所有字符串连起来的总长度。

于是,开始写代码。第一次提交:

class Solution {fun kthLargestNumber(nums: Array<String>, k: Int): String {val temp:Array<Int> = Array(nums.size){0}for(i in 0 until nums.size){temp[i]=nums[i].toInt()}temp.sort()return temp[nums.size-k].toString()}
}

很开心,没想到中等难度的题目这么简单。然后,执行出错!!Line 5: Exception in thread "main" java.lang.NumberFormatException: For input string: "6888794705"

哦哦,原来是超越整数的界限了。那么再来,我这次用Double数据类型。

class Solution {fun kthLargestNumber(nums: Array<String>, k: Int): String {/*val temp:Array<Int> = Array(nums.size){0}for(i in 0 until nums.size){temp[i]=nums[i].toInt()}*///nums.sort(){c->c.toInt()}//return nums[nums.size-k].toString()val sortedArr = nums.sortedWith(Comparator { s1, s2 ->val i1 = s1.toDouble()val i2 = s2.toDouble()(i1 - i2).toInt()        // Comparator 这个比较器默认返回的是Int类型,所以这里强制转换})return sortedArr[nums.size-k].toString()}
}

当输入倒数第二个测试用例的时候,也是一个数字有这么长的时候9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

又报错了!!

又超过限制了,于是又想到了一个办法,使用BigInteger类:

class Solution {fun kthLargestNumber(nums: Array<String>, k: Int): String {/*val temp:Array<Int> = Array(nums.size){0}for(i in 0 until nums.size){temp[i]=nums[i].toInt()}*///nums.sort(){c->c.toInt()}//return nums[nums.size-k].toString()val sortedArr = nums.sortedWith(Comparator { s1, s2 ->val i1 = s1.toBigInteger()val i2 = s2.toBigInteger()(i1 - i2).toInt()})return sortedArr[nums.size-k].toString()}
}

以为解决的是,但是toInt这个地方又越界了。。郁闷了一会之后,继续又想到了when这个单词:

class Solution {fun kthLargestNumber(nums: Array<String>, k: Int): String {/*val temp:Array<Int> = Array(nums.size){0}for(i in 0 until nums.size){temp[i]=nums[i].toInt()}*///nums.sort(){c->c.toInt()}//return nums[nums.size-k].toString()val sortedArr = nums.sortedWith(Comparator { s1, s2 ->val i1 = s1.toBigInteger()val i2 = s2.toBigInteger()when{i1<i2 -> -1 i1>i2 -> 1 else -> 0 }})return sortedArr[nums.size-k].toString()}
}

既然comparator要返回Int型,那么比较的话,只有三种情况,都返回就行了。终于通过了!

时间1328 ms

击败

N/A

内存69.8 MB

击败

N/A

http://www.15wanjia.com/news/190046.html

相关文章:

  • wordpress extended rss烟台网站seo
  • 网站推广软文建设网站群的意义
  • 网站建设公开招标爱建站大全网
  • wordpress5g够不够深圳seo优化服务
  • 家用电器销售的网站开发微信公众平台号官网
  • 分类信息网站做淘客品牌策划运营公司
  • 网站建设 有道翻译建筑设计公司名称
  • 网站特点免费开源分类信息系统
  • 网站域名选择的原则营销型企业网站优化
  • 什么网站上做指甲最便宜杭州百度网站建设
  • 电子商务网站模版深圳免费网站排名优化
  • 网站常用参数网络服务公司
  • 微信网站建设合同wordpress粘贴word内容
  • 网站规划建设与安全管理化妆品公司网站建设方案
  • 怎样注册网站做销售一起做网站吧
  • 如何做影视网站的标题中德生态园网站定制
  • 万达做的电商网站河池市网站建设
  • 做电影平台网站怎么赚钱的电子商务网站建设asp
  • 龙华网站 建设深圳信科正规品牌网站设计图片
  • 营销型网站建设的5大技巧广西南宁最新消息新闻
  • 中英文外贸网站建设展厅多媒体
  • 美橙网站产品详情oss做下载网站
  • 北京想象力网站建设外贸管理软件
  • 建站之星网站建设下载版天津seo标准
  • 网络建站工作室谷歌浏览器网页截图快捷键
  • 官方网站、门户网站是什么意思?公众号怎么制作投票
  • 论坛网站模板下载瀑布流wordpress
  • 百度推广怎么做的网站品牌建设网站特点
  • 检测网站的seo效果wordpress 件康
  • 做旅游网站图片哪里找广西网站建设建议