Update stack & SUMMARY Struct
ci/woodpecker/push/deploy Pipeline was successful Details
ci/woodpecker/push/test Pipeline was successful Details

This commit is contained in:
Sainnhe Park 2023-03-01 17:21:53 +08:00
parent 4d9b2f18d1
commit 64ba58d64a
2 changed files with 12 additions and 2 deletions

View File

@ -3,6 +3,7 @@
# 数组
- [总结](./array.md)
- [二分查找](./bin_search.md)
- [移除元素](./remove_elements.md)
- [长度最小的子数组](./minimum_size_subarray_sum.md)
- [三数相加](./three_sum.md)
@ -23,6 +24,7 @@
- [替换空格](./substitute_spaces.md)
- [翻转字符串里的单词](./reverse_words_in_a_string.md)
- [左旋转字符串](./reverse_left_words.md)
- [KMP](./kmp.md)
- [重复的子字符串](./repeated_substring_pattern.md)
# 栈与队列
@ -64,10 +66,12 @@
- [排序](./stl_sorting.md)
- [哈希表](./stl_hash_table.md)
- [字符串](./stl_string.md)
- [优先级队列](./stack_and_queue.md)
# 经典代码
- [排序算法](./sorting.md)
- [二分查找](./bin_search.md)
- [KMP](./kmp.md)
- [单调队列](./stack_and_queue.md)
- [合并两个有序链表](./merge_two_sorted_linked_lists.md)

View File

@ -19,7 +19,13 @@
使用场景:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。
从栈底到栈顶单调递减栈用来寻找右边更大元素,单调递增栈用来寻找右边更小元素。
拿找右边第一个比自己大的元素举例:
栈中存储元素的下标 i比较栈顶元素 arr[i] 和当前元素 arr[j] 的大小,
如果栈顶元素 < 当前元素那么 j - i 就是答案栈顶元素出栈注意是循环出栈直到栈顶元素 > 当前元素);
如果栈顶元素 > 当前元素,则当前元素入栈。
时间复杂度O(n)
@ -140,7 +146,7 @@ class MyQueue {
}
void push(int value) {
// 当我们要插入的元素比队尾元素大时,就一直弹出队尾元素,直到小于等于队尾元素为止
// 当我们要插入的元素比队尾元素大时,就一直弹出队尾元素,直到小于等于队尾元素为止
// 这样做没问题吗?
// 没问题,因为我们只关注队首元素是不是最大的,其它元素要不要都无所谓。
while (value > que.back() && !que.empty()) {