商城外贸网站设计,wordpress显示产品类别,动漫网站设计理念,个人网站界面设计图片【LetMeFly】2562.找出数组的串联值#xff1a;模拟#xff08;双指针#xff09;
力扣题目链接#xff1a;https://leetcode.cn/problems/find-the-array-concatenation-value/
给你一个下标从 0 开始的整数数组 nums 。
现定义两个数字的 串联 是由这两个数值串联起来…【LetMeFly】2562.找出数组的串联值模拟双指针
力扣题目链接https://leetcode.cn/problems/find-the-array-concatenation-value/
给你一个下标从 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 10001 nums[i] 104
方法一模拟双指针
使用两个指针 l l l和 r r r分别指向数组中的第一个和最后一个元素。
两个指针不断向中间移动在 l r lr lr时累加 n u m s [ l ] × l e n ( n u m s [ r ] ) n u m s [ r ] nums[l]\times len(nums[r]) nums[r] nums[l]×len(nums[r])nums[r]。
最后如果 l r lr lr则累加一个 n u m s [ l ] nums[l] nums[l]。
时间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C
class Solution {
public:long long findTheArrayConcVal(vectorint nums) {long long ans 0;int l 0, r nums.size() - 1;while (l r) {int t nums[r];long long mul 1;while (t) {t / 10;mul * 10;}ans nums[l] * mul nums[r];l, r--;}if (l r) {ans nums[l];}return ans;}
};Python
# from typing import Listclass Solution:def findTheArrayConcVal(self, nums: List[int]) - int:l, r 0, len(nums) - 1ans 0while l r:ans int(str(nums[l]) str(nums[r]))l, r l 1, r - 1if l r:ans nums[l]return ans同步发文于CSDN原创不易转载经作者同意后请附上原文链接哦~ Tisfyhttps://letmefly.blog.csdn.net/article/details/133797249