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

2023-02-11  本文已影响0人  程序员小2

题目:

给你一个下标从 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 。

输入:nums = [5,14,13,8,12]
输出:673
解释:在执行任一步操作前,nums 为 [5,14,13,8,12] ,串联值为 0 。

提示:

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;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读