2512.奖励最顶尖的K名学生
链接:2512.奖励最顶尖的K名学生
难度:Medium
标签:数组、哈希表、字符串、排序、堆(优先队列)
简介:给你一个整数 k ,请你返回按照得分 从高到低 最顶尖的 k 名学生。
题解 1 - rust
- 编辑时间:2023-10-12
- 内存消耗:2.12MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn find_the_array_conc_val(nums: Vec<i32>) -> i64 {
        let mut i1 = 0;
        let mut i2 = nums.len() - 1;
        let mut res = 0i64;
        while i1 < i2 {
            res += (nums[i1] as i64) * 10i64.pow(nums[i2].to_string().len() as u32)
                + (nums[i2] as i64);
            i1 += 1;
            i2 -= 1;
        }
        if i1 == i2 {
            res += nums[i1] as i64;
        }
        res
    }
}
题解 2 - cpp
- 编辑时间:2023-10-12
- 执行用时:4ms
- 内存消耗:9.2MB
- 编程语言:cpp
- 解法介绍:双指针。
class Solution {
public:
    long long findTheArrayConcVal(vector<int>& nums) {
        long long i1 = 0, i2 = nums.size() - 1, res = 0;
        while (i1 < i2) {
            res += nums[i1] * pow(10, to_string(nums[i2]).size()) + nums[i2];
            i1 += 1;
            i2 -= 1;
        }
        if (i1 == i2) res += nums[i1];
        return res;
    }
};
题解 3 - python
- 编辑时间:2023-10-12
- 执行用时:56ms
- 内存消耗:15.47MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def findTheArrayConcVal(self, nums: List[int]) -> int:
        i1 = 0
        i2 = len(nums) - 1
        res = 0
        while i1 < i2:
            res += nums[i1] * 10 ** len(str(nums[i2])) + nums[i2]
            i1 += 1
            i2 -= 1
        if i1 == i2: res += nums[i1]
        return res