美文网首页
【竞赛题】6354. 找出数组的串联值

【竞赛题】6354. 找出数组的串联值

作者: 程序员小2 | 来源:发表于2023-02-11 10:44 被阅读0次

题目:

给你一个下标从 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] <= 10^4

思路:

双指针,从nums的左left, 右right分别取一个元素, 串联起来。 然后left++,right--.

java代码:

class Solution {
    public long findTheArrayConcVal(int[] nums) {
        
        long sum = 0;
        int len = nums.length;
        if(len ==1) {
            sum+=nums[0];
            return sum;
        }
        
        int l = 0;
        int r = len-1;
        while(l<r) {
            long temp = Long.valueOf(String.valueOf(nums[l])+String.valueOf(nums[r]));
            l++;
            r--;
            
            sum+=temp;
        }
        
        if(l==r) {
            sum+=nums[l];
        }
        return sum;
    }
}

相关文章

  • 【竞赛题】6354. 找出数组的串联值

    题目: 给你一个下标从 0 开始的整数数组 nums 。 现定义两个数字的 串联 是由这两个数值串联起来形成的新数...

  • Return Largest Numbers in Arrays

    找出多个数组中的最大数 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新...

  • FCC-JS-BAS-Return Largest Number

    找出多个数组中的最大数 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新...

  • free code camp,找出多个数组中的最大数

    找出多个数组中的最大数 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新...

  • FCC 257 - 找出多个数组中的最大数

    找出多个数组中的最大数右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数...

  • Return Largest Numbers in Arrays

    找出多个数组中的最大数右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数...

  • 数组操作

    数组去重 数组中找出最大的值

  • 计数排序

    排序简介 找出数组的最大值和最小值,创建新数组[max+1], 原数组值等于新数组下标时, 新数组值加一,最后把新...

  • 力扣 1027 最长等差数列

    题意:给定一个数组,找出最长的等差数列 思路: 遍历数组,找出最大值和最小值 设定dp数组,dp[i][j]记录的...

  • Python统计数组所有值个数与找出数组重复的值

    Python统计数组所有值个数与找出数组重复的值 输出结果 结果1 结果2

网友评论

      本文标题:【竞赛题】6354. 找出数组的串联值

      本文链接:https://www.haomeiwen.com/subject/ozblkdtx.html