【每日一题Day345】LC2562找出数组的串联值 | 模拟

简介: 【每日一题Day345】LC2562找出数组的串联值 | 模拟

找出数组的串联值【LC2562】

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

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

例如,15 和 49 的串联是 1549 。

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

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

如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。

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

思路

按题意进行模拟,先计算每对元素nums[i]和nums[ni1]的串联值,累加到结果中;如果数组长度为奇数,那么代表有单个元素剩余,将其累加到结果中

  • 实现
class Solution {
    public long findTheArrayConcVal(int[] nums) {
        long res = 0L;
        int n = nums.length;
        for (int i = 0; i < (n + 1) / 2; i++){
            if (i != n - i - 1){
                long a = nums[i];
                int b = nums[n - i - 1];
                while (b > 0){
                   a *= 10;
                   b /= 10;
                }
                a += nums[n - i - 1];
                res += a;
            }else{
                res += nums[i];
            }
        }
        return res;
    }
}

复杂度

时间复杂度:O ( n )

空间复杂度:O ( 1 )

目录
相关文章
|
7月前
【每日一题Day268】LC415字符串相加 | 模拟
【每日一题Day268】LC415字符串相加 | 模拟
48 0
|
7月前
【每日一题Day119】LC1250检查好数组 | 数学
【每日一题Day119】LC1250检查好数组 | 数学
49 0
|
7月前
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
43 0
|
7月前
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
50 0
|
7月前
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
49 0
|
7月前
【每日一题Day308】LC57插入区间 | 模拟
【每日一题Day308】LC57插入区间 | 模拟
48 0
|
7月前
|
前端开发
【每日一题Day228】LC2460对数组执行操作 | 模拟+双指针
【每日一题Day228】LC2460对数组执行操作 | 模拟+双指针
41 0
|
7月前
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
32 0
|
7月前
|
测试技术 索引
【每日一题Day296】LC833字符串中的查找与替换 | 排序+模拟
【每日一题Day296】LC833字符串中的查找与替换 | 排序+模拟
45 0
【每日一题Day103】LC1669合并两个链表 | 模拟
思路:遍历链表找到list1中的第a−1个节点和第b+1个节点,然后将第a−1个节点指向list2链表的初始节点,list2链表的尾节点指向list1中的第b+1个节点
85 0
【每日一题Day103】LC1669合并两个链表 | 模拟