leetcode1985. 找出数组中的第 K 大整数
给你一个字符串数组 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 <= 1041 <= nums[i].length <= 100nums[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
相关文章:
leetcode1985. 找出数组中的第 K 大整数
给你一个字符串数组 nums 和一个整数 k 。nums 中的每个字符串都表示一个不含前导零的整数。 返回 nums 中表示第 k 大整数的字符串。 注意:重复的数字在统计时会视为不同元素考虑。例如,如果 nums 是 ["1","2","2"]&am…...
基于深度学习的高精度野生动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度野生动物检测(水牛、犀牛、斑马和大象)识别系统可用于日常生活中或野外来检测与定位野生动物目标,利用深度学习算法可实现图片、视频、摄像头等方式的野生动物目标检测识别,另外支持结果可视…...
从零开始 Spring Boot 35:Lombok
从零开始 Spring Boot 35:Lombok 图源:简书 (jianshu.com) Lombok是一个java项目,旨在帮助开发者减少一些“模板代码”。其具体方式是在Java代码生成字节码(class文件)时,根据你添加的相关Lombok注解或类来…...
深入解析Spring源码系列:Day 6 - Spring MVC原理
深入解析Spring源码系列:Day 6 - Spring MVC原理 欢迎来到本系列的第六篇博客。在前几篇博客中,我们探索了Spring框架的核心概念,包括Bean的生命周期、作用域、AOP原理和事务管理。今天,我们将深入研究Spring框架中的MVC…...
Cmake中message函数 如何优雅地输出
message函数说明 在CMake中,message()函数用于向终端输出信息。 message([<mode>] "message text" ...)函数的<mode>参数可以是以下之一: (none): 等同于STATUS,但不推荐使用。STATUS: 输出的信息会被发送到CMake的…...
人工智能基础部分20-生成对抗网络(GAN)的实现应用
大家好,我是微学AI,今天给大家介绍一下人工智能基础部分20-生成对抗网络(GAN)的实现应用。生成对抗网络是一种由深度学习模型构成的神经网络系统,由一个生成器和一个判别器相互博弈来提升模型的能力。本文将从以下几个方面进行阐述࿱…...
JavaScript表单事件(上篇)
目录 一、input: 当表单元素的值发生改变时触发,适用于大多数表单元素。 二、change: 当表单元素的值发生改变且失去焦点时触发,适用于输入框、下拉列表等。 三、submit: 当表单提交时触发,适用于 form 元素。 四、reset: 当表单重置时触…...
vb6 Webview2微软Edge Chromium内核执行JS取网页数据测速
微软Edge Chromium内核执行JS获取网页数据测试 ExcuteScript eval(document.body.innerHTML) from : https://www.163.com 采集的网页HTM字符串占用字节空间1.2MB ExcuteScript回调事件中取得JS执行结果,用时 54 毫秒 其中JSON转字符13.5209毫秒 jSON数据长度: 增…...
编码,Part 1:ASCII、汉字及 Unicode 标准
个人博客 编码的历史由来就懒得介绍了,只需要知道人类处理文本信息是以字符为基本单位,而计算机在最底层只认识 0/1,所以当计算机要为人类存储/呈现字符时,就需要有一个规则,在字符和 0/1 序列之间建立映射关系&#…...
C++ Eigen库矩阵操作
C Eigen库 序号功能例子1赋值Eigen::MatrixXf mat (12,1); \\% mat << 1, 2, 3, 4,5,6,7,8,9,10,11,12;2Inplace操作 \\% resizemat.resize(4, 3); \\% 1 5 9 \\% 2 6 10 \\% 3 7 11 \\% 4 8 123转置 \\% transposeInPlacemat.transposeInPlace(); \\% 1 2 3 4 \\% 5…...
Linux-0.11 boot目录bootsect.s详解
Linux-0.11 boot目录bootsect.s详解 模块简介 bootsect.s是磁盘启动的引导程序,其概括起来就是代码的搬运工,将代码搬到合适的位置。下图是对搬运过程的概括,可以有个印象,后面将详细讲解。 bootsect.s主要做了如下的三件事: 搬…...
django组件552
前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...
【枚举算法的Java实现及其应用】
文章目录 枚举算法概述枚举算法的实现步骤Java实现枚举算法枚举算法的底层工作原理枚举算法的底层代码讲解枚举算法的实际应用场景枚举算法在场景中解决的问题总结 枚举算法概述 枚举算法是一种通过列举所有可能情况来解决问题的方法。这种算法在解决一些特定类型的问题时非常…...
linux led 驱动
前言 今天是儿童节,挣个奖牌给小孩玩玩。 在 linux 驱动大家庭中,LED 驱动算是个儿童,今天就写写他吧。正好之前写过他的婴儿时期《i.MX6ULL 裸机点亮 LED》,记得那时候他还穿着开裆裤呢,裸鸡嘛。 ioremap() 裸机程…...
平面最近点对(分治算法)
文章目录 平面最近点对(分治算法)Solution流程完整模板代码 平面最近点对(分治算法) 文章首发于我的个人博客:欢迎大佬们来逛逛 平面最近点对(加强版) - 洛谷 给你一些点,求两点之…...
【基于前后端分离的博客系统】Servlet版本
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一. 项目简介 1. 项目背景 2. 项目用到的技…...
在线Excel绝配:SpreadJS 16.1.1+GcExcel 6.1.1 Crack
前端:SpreadJS 16.1.1 后端: GcExcel 6.1.1 全能 SpreadJS 16.1.1此版本的产品中包含以下功能和增强功能。 添加了各种输入掩码样式选项。 添加了在保护工作表时设置密码以及在取消保护时验证密码的支持。 增强了组合图以将其显示为仪表图。 添加了…...
一个轻量的登录鉴权工具Sa-Token 集成SpringBoot简要步骤
Sa-Token 集成SpringBoot简要步骤 1.1 简单介绍 Sa-Token是一个轻量级Java权限认证框架。 主要解决的问题如下: 登录认证 权限认证 单点登录 OAuth2.0 分布式Session会话 微服务网关鉴权等一系列权限相关问题。 1.2 登录认证 设计思路 对于一些登录之后…...
day 44 完全背包:518. 零钱兑换 II;377. 组合总和 Ⅳ
完全背包:物品可以使用多次 完全背包1. 与01背包区别 518. 零钱兑换 II1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:不能颠倒两个for循环顺序5. 代码 377. 组合总和 Ⅳ:与零钱兑换类似,但是是求组合数1. dp数组以及下标名义2. 递归…...
K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods
K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods 你已了解Pod以及如何通过ReplicaSets等资源部署它们以确保持续运行。虽然某些Pod可以独立完成工作,但现今许多应用程序需要响应外部请求。例如,在微服务的情况…...
深入解析CPU L1/L2缓存:原理、性能影响与编程优化实战
1. 项目概述:从“快”字说起做性能调优或者写高性能代码的朋友,对“缓存”这个词一定不陌生。我们总在说,把数据放进缓存里,访问就快了。但缓存本身,尤其是离CPU核心最近的一级缓存(L1 Cache)和…...
3分钟快速优化Windows 11:免费开源工具Win11Debloat完全指南
3分钟快速优化Windows 11:免费开源工具Win11Debloat完全指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...
LLM 本地部署框架 vLLM 和 LMDeploy
1. 安装vLLM的环境 1.1 安装要求 1. vLLM 包含预编译的 C 和 CUDA (12.8) 二进制文件。 2. 要求: 操作系统: LinuxPython: 3.9 -- 3.12 # (实测:推荐安装3.10以上版本)GPU: 计算能力 7.0 或更高 (例如, V100, T4, RTX20xx, A100, L4, H100 等…...
Navicat16/17 Mac版试用期终极重置指南:三种自动化方案实现无限免费使用
Navicat16/17 Mac版试用期终极重置指南:三种自动化方案实现无限免费使用 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_ma…...
嵌入式核心板选型实战:从AI加速到工业控制的设计权衡与趋势
1. 展会现场与行业风向初探上周,我作为飞凌嵌入式的一名老员工,亲身参与了2024上海国际嵌入式展。这不仅仅是一次公司产品的展示,更像是一场行业技术趋势的集中检阅。从人头攒动的展台到同行间热烈的技术交流,你能清晰地感受到&am…...
智慧树刷课插件完整教程:3步实现自动学习,告别手动刷课烦恼
智慧树刷课插件完整教程:3步实现自动学习,告别手动刷课烦恼 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的手动刷课而烦…...
spring boot 11
一、分组校验(Spring Validation)1. 核心概念分组校验是 Spring Validation 提供的功能,用于在不同业务场景(新增 / 更新)下,对同一个实体类执行不同的校验规则,避免重复定义实体类。2. 分组校验…...
用Python手把手复现NRBO优化算法:从数学公式到完整代码的保姆级教程
用Python手把手复现NRBO优化算法:从数学公式到完整代码的保姆级教程 优化算法在工程和科学计算中扮演着关键角色,而牛顿-拉弗森优化算法(NRBO)作为最新提出的智能优化方法,凭借其高效的收敛性能引起了广泛关注。本文将彻底拆解NRBO的核心机制…...
无需贴点+760万点/秒!精度0.023mm+单站覆盖156m³!FreeScan Trak系列跟踪式激光三维扫描仪来袭
先临三维深耕高精度三维视觉技术20余年,旗下FreeScan Trak系列跟踪式激光三维扫描系统,凭借高精度、重复性稳定、无需贴点、扫描快速等核心优势,已广泛应用于汽车工业、能源重工、工程机械等诸多领域,成为全球众多制造企业质量把控…...
医疗票据 OCR 识别 API 多场景落地指南:医保结算 + 商保理赔 + 医疗信息化(附 Python/Java 完整示例)
《医疗 OCR 识别 API 怎么选?(报告单 / 发票 / 检测单)》医疗票据 OCR 识别 API 多场景落地指南:医保结算 商保理赔 医疗信息化(附 Python/Java 完整示例) 导语:每天上万张医疗票据ÿ…...
