给你一个字符串数组 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]不含任何前导零
C++
class Solution {
public:
static bool cmp(string& a, string& b) {
if(a.size()==b.size()) {
return a<b;
} else {
return a.size()<b.size();
}
}
string kthLargestNumber(vector<string>& nums, int k) {
sort(nums.begin(),nums.end(),cmp);
int n=nums.size();
return nums[n-k];
}
};
java
class Solution {
public String kthLargestNumber(String[] nums, int k) {
Arrays.sort(nums, ((o1, o2) -> {
if (o1.length() == o2.length()) {
return o1.compareTo(o2);
} else {
return o1.length() - o2.length();
}
}));
int n = nums.length;
return nums[n - k];
}
}
python
class Solution:
def kthLargestNumber(self, nums: List[str], k: int) -> str:
n = len(nums)
nums = sorted(nums, key=lambda x: (len(x), x))
return nums[n - k]
该篇博客介绍了一个C++、Java和Python的编程问题,涉及字符串数组的排序。给定一个字符串数组nums,每个字符串代表一个整数,任务是找到并返回数组中第k大的整数。解决方案通过比较字符串长度和值来实现非递减排序,从而找到第k大元素。
&spm=1001.2101.3001.5002&articleId=119980180&d=1&t=3&u=df50628ba08649a6b1620204ade0d201)
607

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



