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

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

题目描述

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

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


例如,15 和 49 的串联是 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 <= nums[i] <= 104

解题方法

  • 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++
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;
    }
};


相关文章
|
2月前
|
算法
【数组相关面试题】LeetCode试题
【数组相关面试题】LeetCode试题
|
2月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
23 0
|
2月前
|
人工智能 BI
力扣561 数组拆分
力扣561 数组拆分
【每日一题】6.LeetCode——轮转数组
【每日一题】6.LeetCode——轮转数组
|
4月前
|
机器学习/深度学习 C语言
LeetCode | 17.04.消失的数字和189.旋转数组
17.04.消失的数字 OJ链接 这里题目要求在时间复杂度上O(n)我们介绍三种方法,看看哪种方法适合这道题~~
|
19天前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
15天前
【力扣】238. 除自身以外数组的乘积
【力扣】238. 除自身以外数组的乘积
|
27天前
|
算法 C++ 索引
【力扣经典面试题】238. 除自身以外数组的乘积
【力扣经典面试题】238. 除自身以外数组的乘积
|
2月前
|
存储 算法
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
|
2月前
|
存储
力扣刷题-最大子数组和
力扣刷题-最大子数组和
10 1

热门文章

最新文章