2023.10.12 leetcode-2562 找出数组的串联值

题目

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

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

    • 例如,15 和 49 的串联是 1549 。nums 的 串联值 最初等于 0 。执行下述操作直到 nums 变为空:
      • 如果 nums 中存在不止一个数字,分别选中 nums 中的第一个元素和最后一个元素,将二者串联得到的值加到 nums 的 串联值 上,然后从 nums 中删除第一个和最后一个元素。
      • 如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。
    • 返回执行完所有操作后 nums 的串联值。
  • 示例 1:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    输入: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:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    输入: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

分析

  • easy题没啥好分析的,双指针定位前后数字,串联即可
  • 串联的话,前数字要*10^n,n为后数字位数
  • 同时本题不考虑nums[i] == 0 的情况,就不需要额外考虑这种情况了
  • 当然直接使用Integer.parseInt那简单了,数组-字符串-数字

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
//串联最后两个数字,然后从数组中移除这个两个数字
//重复上述过程然后累计串联值
//因为此处nums[i]>0,因此无需考虑nums[i] == 0 的情况
public long findTheArrayConcVal(int[] nums) {
long ans = 0;
int i = 0,j = nums.length-1;
long cur;
int base;
while(i<=j)
{
base = 1;
if(i<j)
{
cur = nums[j];
while(cur>0)//不用考虑cur==0,但是base==10的情况
{
cur/=10;
base*=10;
}
ans+=nums[j];
}
ans+= nums[i]*base;
++i;
--j;
}
return ans;
}
}

2023.10.12 leetcode-2562 找出数组的串联值

http://norton-lin.com/2023/10/12/LeetCode/leetcode-2562/

作者

Norton-Lin

发布于

2023-10-12

更新于

2024-09-01

许可协议

评论