跳到主要内容

2562.找出数组的串联值

链接:2562.找出数组的串联值
难度:Easy
标签:数组、双指针、模拟
简介:返回执行完所有操作后 nums 的串联值。

题解 1 - cpp

  • 编辑时间:2023-02-12
  • 执行用时:8ms
  • 内存消耗:9MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
long long findTheArrayConcVal(vector<int>& nums) {
long long res = 0;
while (nums.size() >= 2) {
long long num1 = nums[0], num2 = nums[nums.size() - 1];
res += merge(num1, num2);
nums.erase(nums.begin());
nums.pop_back();
}
if (nums.size() == 1) res += nums[0];
return res;
}
long long merge(long long num1, long long num2) {
return num1 * pow(10, cnt(num2)) + num2;
}
int cnt(long long num) {
int res = 0;
while (num) {
res += 1;
num /= 10;
}
return res;
}
};

题解 2 - python

  • 编辑时间:2023-02-12
  • 执行用时:44ms
  • 内存消耗:14.9MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def findTheArrayConcVal(self, nums: List[int]) -> int:
res = 0
while len(nums) >= 2:
num1, num2 = nums[0], nums[-1]
res += int(str(num1) + str(num2))
nums = nums[1:-1]
if len(nums) == 1:
res += nums[0]
return res

题解 3 - rust

  • 编辑时间:2023-02-12
  • 内存消耗:2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn find_the_array_conc_val(nums: Vec<i32>) -> i64 {
let mut nums = &nums[..];
let mut res = 0;
while nums.len() >= 2 {
let (num1, num2) = (nums.first().unwrap(), nums.last().unwrap());
res += [(*num1).to_string(), (*num2).to_string()]
.concat()
.parse::<i64>()
.unwrap();
nums = &nums[1..nums.len() - 1];
}
if nums.len() == 1 {
res += nums[0] as i64;
}
res
}
}