力扣(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
致语
  • 理解思路很重要。
  • 请读者放心留言,可以是疑惑的点,或者感谢/夸奖也可以!!墨染看到会回复的。
相关推荐
CodeRecycle4 小时前
Python 自动配置 pip 支持库(通过 Windows Bat 脚本)
算法
liliangcsdn5 小时前
特质偏度因子的计算示例和分析
算法
荆棘鸟智能5 小时前
无人机遥感图像实时拼接算法工程实践:从特征提取到全景融合的完整技术链路
算法·无人机
xxwxx__6 小时前
C++ STL set 与 map 全套详解:关联式容器、红黑树底层、代码坑点、刷题实战
数据结构·c++
6Hzlia6 小时前
【Classic 150 刷题计划】 LeetCode 58. 最后一个单词的长度 | C++ 极简反向遍历与单变量状态机
算法
AgentMaster6 小时前
企业如何应用智能客服?5 个典型场景的技术架构与实施路径
大数据·算法
程曦曦6 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
j7~7 小时前
【Linux网络加餐】(篇六)网络版计算器(上):模板方法模式、序列化与 JSON
linux·c++·json·序列化·反序列化·网络版计算机
weixin_307779137 小时前
C++代码实现MATLAB中的ode45函数功能
开发语言·c++·算法·matlab
张小姐的猫7 小时前
【AI大模型接入SDK】 —— 数据管理 & 与Session模块进行联动
数据结构·数据库·c++·人工智能·python·chatgpt