返回介绍

solution / 1900-1999 / 1985.Find the Kth Largest Integer in the Array / README

发布于 2024-06-17 01:03:12 字数 2812 浏览 0 评论 0 收藏 0

1985. 找出数组中的第 K 大整数

English Version

题目描述

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

返回 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] 不含任何前导零

解法

方法一:自定义排序

class Solution:
  def kthLargestNumber(self, nums: List[str], k: int) -> str:
    def cmp(a, b):
      if len(a) != len(b):
        return len(b) - len(a)
      return 1 if b > a else -1

    nums.sort(key=cmp_to_key(cmp))
    return nums[k - 1]
class Solution {
  public String kthLargestNumber(String[] nums, int k) {
    Arrays.sort(
      nums, (a, b) -> a.length() == b.length() ? b.compareTo(a) : b.length() - a.length());
    return nums[k - 1];
  }
}
class Solution {
public:
  string kthLargestNumber(vector<string>& nums, int k) {
    auto cmp = [](const string& a, const string& b) { return a.size() == b.size() ? a > b : a.size() > b.size(); };
    sort(nums.begin(), nums.end(), cmp);
    return nums[k - 1];
  }
};
func kthLargestNumber(nums []string, k int) string {
  sort.Slice(nums, func(i, j int) bool {
    a, b := nums[i], nums[j]
    if len(a) == len(b) {
      return a > b
    }
    return len(a) > len(b)
  })
  return nums[k-1]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文