前往
大廳
主題

LeetCode - 2562. Find the Array Concatenation Value 解題心得

Not In My Back Yard | 2024-01-15 12:00:01 | 巴幣 0 | 人氣 59

題目連結:


題目意譯:
你被給定一個索引值從 0 開始的整數陣列 nums。

兩個數字的「串接」為一個由它們兩者的數值相接在一起所形成的新數字。

例如說,15 和 49 的串接為 1549。

nums 的「串接值」一開始為 0。執行以下操作直到 nums 變為空:
    如果 nums 中存在多於一個數字,則從 nums 中挑出第一個以及最後一個元素。將兩者串接後再將其值加到 nums 的串接值裡。之後並將第一個和最後一個元素從 nums 中刪除;
    如果只存在一個元素,則將其值直接加進 nums 的串接值中並刪除該元素。

回傳 nums 的串接值。

限制:
1 ≦ nums.length ≦ 1000
1 ≦ nums[i] ≦ 10 ^ 4



範例測資:
範例 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。


解題思維:
直接模擬即可。不過「刪除」的部分可以改用兩個指標,一個指向「當前」第一個元素而另一個指向最後一個元素。

只要兩個指標還尚未「交錯」(即跨過彼此),就把兩個指標指到的元素串接在一起並加到串接值中(如果兩個指標是指到同一個就直接加到串接值中)。

最後的串接值即為所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作