• 【LeetCode】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 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    示例 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    提示:

    • 1 <= nums.length <= 1000
    • 1 <= nums[i] <= 10^4

    个人题解

    思路:

    1. 双指针,左右改成字符串再相加

    2. 当数组为奇数时需加nums[left]

    class Solution {
        public long findTheArrayConcVal(int[] nums) {
            int left = 0;
            int right = nums.length - 1;
            long sum = 0L;
            while (left < right) {
                sum += Long.parseLong(Integer.toString(nums[left++]) + Integer.toString(nums[right--]));
            }
            if (left == right) {
                sum += nums[left];
            }
            return sum;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    官方题解

    class Solution {
        public long findTheArrayConcVal(int[] nums) {
            long ans = 0;
            for (int i = 0, j = nums.length - 1; i <= j; i++, j--) {
                if (i != j) {
                    ans += Integer.parseInt(Integer.toString(nums[i]) + Integer.toString(nums[j]));
                } else {
                    ans += nums[i];
                }
            }
            return ans;
        }
    }
    
    作者:力扣官方题解
    链接:https://leetcode.cn/problems/find-the-array-concatenation-value/solutions/2420231/zhao-chu-shu-zu-de-chuan-lian-zhi-by-lee-4aam/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    netty系列之:EventLoop,EventLoopGroup和netty的默认实现
    VHOST-SCSI代码分析(2)VHOST SCSI驱动分析
    同一个接口时快时慢。一次慢的,三四次是快的。怎么回事?
    Java-HelloWorld编写与执行(记事本)错误: 编码GBK的不可映射字符
    RK3568驱动指南|第六篇 -平台总线-第50章 平台总线模型介绍
    Day48 力扣动态规划 : 647. 回文子串 |516.最长回文子序列 |动态规划总结篇
    Linux操作系统学习(运维必会)
    Spring Boot 开启https访问(配置SSL证书)
    zabbix 钉钉&微信&企微告警(动作&操作&消息内容模板)
    WebRTC系列-网络传输之本地scoket端口
  • 原文地址:https://blog.csdn.net/xxx1276063856/article/details/133947017