Skip to content

Commit 27f1e26

Browse files
committed
chore: add neetcode-gh/leetcode
1 parent aaa4709 commit 27f1e26

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

Leetcode/1046.Last-Stone-Weight/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,32 @@ Constraints:
9494
1 <= stones[i] <= 1000
9595

9696
## 題目大意
97+
有一個集合 stones,每個 stone 的重量由正整數表示。
98+
每次可以選擇兩個不同的石頭,將它們一起粉碎,然後得到一個新的石頭,其重量為兩者之差。
99+
你需要重複這個過程,直到集合中只剩下一個石頭,或者集合中沒有石頭為止。
100+
在這個過程中,找到可能的最後一顆石頭的重量。如果集合中沒有石頭,則返回 0。
97101

102+
```makefile
103+
Input: stones = [2,7,4,1,8,1]
104+
Output: 1
105+
Explanation:
106+
步驟1:選擇石頭 7 和 8,得到新石頭 [2,4,1,1,1]。
107+
步驟2:選擇石頭 2 和 4,得到新石頭 [2,1,1,1]。
108+
步驟3:選擇石頭 2 和 1,得到新石頭 [1,1,1]。
109+
步驟4:選擇石頭 1 和 1,得到新石頭 [0,1]。
110+
步驟5:選擇石頭 1 和 0,得到新石頭 [1]。
111+
最後剩下的石頭的重量為 1。
112+
```
98113

99114
## 解題思路
100115

116+
1. 將 stones 陣列轉換為最大堆(max heap),可以使用優先佇列實現。
117+
2. 進行迴圈,每次從最大堆中取出兩個最大的石頭。
118+
3. 如果兩個石頭不相等,將它們的差值插入最大堆。
119+
4. 重複上述步驟,直到最大堆中只剩下一個石頭或沒有石頭為止。
120+
5. 如果最大堆中有石頭,返回該石頭的重量,否則返回 0。
121+
這樣的做法確保每次都選擇最大的兩個石頭進行粉碎,最終留下的石頭重量就是可能的最後一個石頭的重量。
122+
101123
## Big O
102124
時間複雜 : ``
103125
空間複雜 : ``

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1034,4 +1034,5 @@ int binarySearch(int[] nums, int target){
10341034
* [GeeksforGeeks](https://www.geeksforgeeks.org/)
10351035
* [Codility](https://app.codility.com/programmers/)
10361036
* [GitHub: labuladong/fucking-algorithm(labuladong 算法小抄)](https://github.com/labuladong/fucking-algorithm)
1037-
* https://cses.fi/
1037+
* https://cses.fi/
1038+
* https://github.com/neetcode-gh/leetcode

0 commit comments

Comments
 (0)