diff --git a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/README.md b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/README.md index 41b22c020..d18184c44 100755 --- a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/README.md +++ b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/README.md @@ -1,28 +1,42 @@ # [2460.Apply Operations to an Array][title] -> [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +You are given a **0-indexed** array `nums` of size `n` consisting of **non-negative** integers. + +You need to apply `n - 1` operations to this array where, in the `ith` operation (**0-indexed**), you will apply the following on the `ith` element of `nums`: + +- If `nums[i] == nums[i + 1]`, then multiply `nums[i]` by `2` and set `nums[i + 1]` to `0`. Otherwise, you skip this operation. + +After performing **all** the operations, **shift** all the `0`'s to the **end** of the array. + +- For example, the array `[1,0,2,0,0,1]` after shifting all its 0's to the end, is `[1,2,1,0,0,0]`. + +Return the resulting array. + +**Note** that the operations are applied **sequentially**, not all at once. + **Example 1:** ``` -Input: a = "11", b = "1" -Output: "100" +Input: nums = [1,2,2,1,1,0] +Output: [1,4,2,0,0,0] +Explanation: We do the following operations: +- i = 0: nums[0] and nums[1] are not equal, so we skip this operation. +- i = 1: nums[1] and nums[2] are equal, we multiply nums[1] by 2 and change nums[2] to 0. The array becomes [1,4,0,1,1,0]. +- i = 2: nums[2] and nums[3] are not equal, so we skip this operation. +- i = 3: nums[3] and nums[4] are equal, we multiply nums[3] by 2 and change nums[4] to 0. The array becomes [1,4,0,2,0,0]. +- i = 4: nums[4] and nums[5] are equal, we multiply nums[4] by 2 and change nums[5] to 0. The array becomes [1,4,0,2,0,0]. +After that, we shift the 0's to the end, which gives the array [1,4,2,0,0,0]. ``` -## 题意 -> ... - -## 题解 +**Example 2:** -### 思路1 -> ... -Apply Operations to an Array -```go ``` - +Input: nums = [0,1] +Output: [1,0] +Explanation: No operation can be applied, we just shift the 0 to the end. +``` ## 结语 diff --git a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution.go b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution.go index d115ccf5e..38f54ad9f 100644 --- a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution.go +++ b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution.go @@ -1,5 +1,19 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(nums []int) []int { + ans := make([]int, len(nums)) + for i := 0; i < len(nums)-1; i++ { + if nums[i] == nums[i+1] { + nums[i], nums[i+1] = nums[i]*2, 0 + continue + } + } + index := 0 + for i := range nums { + if nums[i] != 0 { + ans[index] = nums[i] + index++ + } + } + return ans } diff --git a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution_test.go b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution_test.go index 14ff50eb4..fd9e5abc4 100644 --- a/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution_test.go +++ b/leetcode/2401-2500/2460.Apply-Operations-to-an-Array/Solution_test.go @@ -10,12 +10,11 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs []int + expect []int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", []int{1, 2, 2, 1, 1, 0}, []int{1, 4, 2, 0, 0, 0}}, + {"TestCase2", []int{0, 1}, []int{1, 0}}, } // 开始测试 @@ -30,10 +29,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }