You are given a string s
and an integer k
, a k
duplicate removal consists of choosing k
adjacent and equal letters from s
and removing them, causing the left and the right side of the deleted substring to concatenate together.
We repeatedly make k
duplicate removals on s
until we no longer can.
Return the final string after all such duplicate removals have been made. It is guaranteed that the answer is unique.
Example 1:
Input: s = "abcd", k = 2 Output: "abcd" Explanation: There's nothing to delete.
Example 2:
Input: s = "deeedbbcccbdaa", k = 3 Output: "aa" Explanation: First delete "eee" and "ccc", get "ddbbbdaa" Then delete "bbb", get "dddaa" Finally delete "ddd", get "aa"
Example 3:
Input: s = "pbbcggttciiippooaais", k = 2 Output: "ps"
Constraints:
1 <= s.length <= 105
2 <= k <= 104
s
only contains lowercase English letters.
A:
就是自己弄了个linkded list, 然后一个个加上然后再删除的
(好处是方便最好一个增加或者删除) --------只是beat了 38%
-----------------第二遍----------- 只是用了个vector, 因为根据上面的linkedlist, 我们也只是需要处理最后一个位置就行--------- 但也只是beat了66%----
----------再仔细看, 其实就只是用stack----------
然而改了后,并没有变快。
Learned:
不能在循环里用
You're getting a "stack-use-after-scope" error because of this line in your code:
This creates a stack-allocated Node
(newTail
), then stores a pointer to it in the linked list. But after that iteration of the loop ends, newTail
goes out of scope and is destroyed, leaving a dangling pointer.
No comments:
Post a Comment