力扣(LeetCode)2562. 找出数组的串联值(C++)

转化字符串

模拟,数字拼接的思路模糊,字符串拼接的思路清晰,于是有:数字转字符串,字符串拼接,字符串转数字(得到两个数字的串联)。

cpp 复制代码
class Solution {
public:
    long long findTheArrayConcVal(vector<int>& nums) {
        int i = 0, j = nums.size() - 1;
        long long ans = 0;
        while (i < j) {
            ans += stoi(to_string(nums[i ++]) + to_string(nums[j --]));
        }
        if (i == j) ans += nums[i];
        return ans;
    }
};

时间复杂度 O ( n l o g U ) O(nlogU) O(nlogU) : n n n是 n u m s nums nums的长度, U U U 是数组元素的最大值,遍历到每个数组元素一次,每个数组元素转换字符串,总体时间复杂度 O ( n l o g U ) O(nlogU) O(nlogU)。

空间复杂度 O ( l o g U ) O(logU) O(logU) : 字符串的空间复杂度 O ( l o g U ) O(logU) O(logU)。

数学+双指针

按照数学方法,直接串联两个数字:前者pre,后者back。算法流程:pre左移(10进制,左移定义为乘以10)back的位数;pre左移的结果+back原先的数值=pre和back的串联。

请看代码:

cpp 复制代码
class Solution {
public:
    long long findTheArrayConcVal(vector<int>& nums) {
        int i = 0, j = nums.size() - 1;
        long long ans = 0;
        int pre, back;
        while (i < j) {
            pre = nums[i ++], back = nums[j --];
            while (back) {
                pre *= 10;
                back /= 10;
            }
            ans += pre + nums[j + 1];
        }
        if (i == j) ans += nums[i];
        return ans;
    }
};

时间复杂度 O ( n l o g U ) O(nlogU) O(nlogU) : n n n是 n u m s nums nums的长度, U U U 是数组元素的最大值,遍历到每个数组元素一次,每个数组元素转换字符串,总体时间复杂度 O ( n l o g U ) O(nlogU) O(nlogU)。

空间复杂度 O ( 1 ) O(1) O(1) : 只使用常数级空间 O ( 1 ) O(1) O(1)。

AC
致语
  • 理解思路很重要。
  • 请读者放心留言,可以是疑惑的点,或者感谢/夸奖也可以!!墨染看到会回复的。
相关推荐
(Charon)4 分钟前
【C++面试】线程同步机制:互斥锁、条件变量、原子操作与读写锁
开发语言·c++·算法·面试
七牛云行业应用19 分钟前
刚刚!GPT-6.1 Sol Ultrafast 上线:速度、价格、API 接入全指南
算法
Omics Pro20 分钟前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
在所不辞兄24 分钟前
常微分方程详解与应用
人工智能·神经网络·算法·机器学习
-dzk-25 分钟前
【动态规划】LC 416.分割等和子集
算法·动态规划·代理模式
夜不会漫长31 分钟前
C++:内存管理
java·开发语言·c++
彦34 分钟前
C和C++笔记
c语言·c++·笔记
夏幻灵1 小时前
每日一题:LeetCode 1:两数之和——从暴力枚举到 Map 哈希表优化
算法·leetcode·散列表
段一凡-华北理工大学1 小时前
高炉炼铁机器视觉与智能识别十八讲~系列文章09:AI 算法基础:从传统图像处理到深度学习的视觉“大脑“
图像处理·人工智能·算法·机器视觉·工业智能化·高炉炼铁智能化·高炉智能识别
alphaTao1 小时前
LeetCode 每日一题 2026/9/28-2026/10/4
算法·leetcode