【力扣】2562. 找出数组的串联值

题目描述

给你一个下标从 0 开始的整数数组 nums

现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。

  • 例如,1549 的串联是 1549

nums串联值 最初等于 0 。执行下述操作直到 nums 变为空:

  • 如果 nums 中存在不止一个数字,分别选中 nums 中的第一个元素和最后一个元素,将二者串联得到的值加到 nums串联值 上,然后从 nums 中删除第一个和最后一个元素。
  • 如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。

返回执行完所有操作后 nums 的串联值。

示例 1:

输入:nums = 7,52,2,4

输出:596

解释:在执行任一步操作前,nums 为 7,52,2,4 ,串联值为 0 。

  • 在第一步操作中:
    我们选中第一个元素 7 和最后一个元素 4 。
    二者的串联是 74 ,将其加到串联值上,所以串联值等于 74 。
    接着我们从 nums 中移除这两个元素,所以 nums 变为 52,2
  • 在第二步操作中:
    我们选中第一个元素 52 和最后一个元素 2 。
    二者的串联是 522 ,将其加到串联值上,所以串联值等于 596 。
    接着我们从 nums 中移除这两个元素,所以 nums 变为空。
    由于串联值等于 596 ,所以答案就是 596 。

示例 2:

输入:nums = 5,14,13,8,12

输出:673

解释:在执行任一步操作前,nums 为 5,14,13,8,12 ,串联值为 0 。

  • 在第一步操作中:
    我们选中第一个元素 5 和最后一个元素 12 。
    二者的串联是 512 ,将其加到串联值上,所以串联值等于 512 。
    接着我们从 nums 中移除这两个元素,所以 nums 变为 14,13,8
  • 在第二步操作中:
    我们选中第一个元素 14 和最后一个元素 8 。
    二者的串联是 148 ,将其加到串联值上,所以串联值等于 660 。
    接着我们从 nums 中移除这两个元素,所以 nums 变为 13
  • 在第三步操作中:
    nums 只有一个元素,所以我们选中 13 并将其加到串联值上,所以串联值等于 673 。
    接着我们从 nums 中移除这个元素,所以 nums 变为空。
    由于串联值等于 673 ,所以答案就是 673 。

提示:

  • 1 <= nums.length <= 1000
  • 1 <= numsi <= 104

解题方法

  • C
c 复制代码
long long findTheArrayConcVal(int* nums, int numsSize){
    long long sum = 0; // 定义串联值
    char str[10] = {0}; // 定义字符数组

    for(int i = 0, j = numsSize - 1; i <= j; i++, j--) // 从两边向中间开始遍历
    {
        if(i != j)                  // 两两相对
        {
            sprintf(str, "%d%d", nums[i], nums[j]); // 通过字符串进行组合求两个数字的串联
            sum = sum + atoi(str);  // 求和,atoi 将字符串转整形
        }
        else
        {
            sum = sum + nums[i];    // 剩下中间一个
        }
    }
    return sum;
}
  • C++
cpp 复制代码
class Solution {
public:
    long long findTheArrayConcVal(vector<int>& nums) {
        long long sum = 0;
        for(int i = 0, j = nums.size() - 1; i <= j; i++, j--)
        {
            if (i != j) 
            {
                sum += stoi(to_string(nums[i]) + to_string(nums[j]));
            } 
            else 
            {
                sum += nums[i];
            }
        }
        return sum;
    }
};
相关推荐
凯瑟琳.奥古斯特36 分钟前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
KaMeidebaby40 分钟前
卡梅德生物技术快报|蛋白的叠氮基修饰:实操解析:核酸模板耦合蛋白的叠氮基修饰实现靶蛋白定点共价标记
前端·人工智能·物联网·算法·百度
通信仿真爱好者2 小时前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
AI科技星2 小时前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
utf8mb4安全女神2 小时前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
先吃饱再说3 小时前
为什么堆能 O(log n) 插入?拆解完全二叉树的数组魔法
算法·排序算法
丘山望岳3 小时前
哈希——数据分类存储柜
数据结构·散列表
留白_4 小时前
【决策树】泰坦尼克号生存预测
算法·决策树·机器学习
hqzing4 小时前
鸿蒙 PC 底层开发技术详解(七):二进制自签名算法的实现
算法·华为·harmonyos
AI科技星4 小时前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学