2512.奖励最顶尖的K名学生
链接:2512.奖励最顶尖的K名学生
难度:Medium
标签:数组、哈希表、字符串、排序、堆(优先队列)
简介:给你一个整数 k ,请你返回按照得分 从高到低 最顶尖的 k 名学生。
题解 1 - 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;
}
};
题解 2 - 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
题解 3 - 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
}
}