Skip to content

Commit 34a3225

Browse files
committed
mysql
1 parent 7d4f2fb commit 34a3225

File tree

40 files changed

+8146
-8115
lines changed

40 files changed

+8146
-8115
lines changed

docs/data-structure-algorithms/data-structure/Stack.md

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ categories: data-structure
1616

1717
### 定义
1818

19-
注意:本文所说的栈是数据结构中的栈,而不是内存模型中栈
19+
注意:本文所说的栈是数据结构中的栈,而不是内存模型中栈
2020

2121
栈(stack)是限定仅在表尾一端进行插入或删除操作的**特殊线性表**。又称为堆栈。
2222

@@ -79,7 +79,7 @@ public interface MyStack {
7979

8080
顺序栈是使用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放栈中的数据元素。由于栈是一种特殊的线性表,因此在线性表的顺序存储结构的基础上,选择线性表的一端作为栈顶即可。那么根据数组操作的特性,选择数组下标大的一端,即线性表顺序存储的表尾来作为栈顶,此时入栈、出栈操作可以 $O(1)$ 时间完成。
8181

82-
由于栈的操作都是在栈顶完成,因此在顺序栈的实现中需要附设一个指针 top 来动态地指示栈顶元素在数组中的位置。通常 top 可以用栈顶元素所在的数组下标来表示,top=-1时表示空栈
82+
由于栈的操作都是在栈顶完成,因此在顺序栈的实现中需要附设一个指针 top 来动态地指示栈顶元素在数组中的位置。通常 top 可以用栈顶元素所在的数组下标来表示,`top=-1` 时表示空栈
8383

8484
栈在使用过程中所需的最大空间难以估计,所以,一般构造栈的时候不应设定最大容量。一种合理的做法和线性表类似,先为栈分配一个基本容量,然后在实际的使用过程中,当栈的空间不够用时再倍增存储空间。
8585

@@ -254,7 +254,7 @@ public class Stack<E> extends Vector<E> {}
254254

255255
栈有一个很重要的应用,在程序设计语言里实现了递归。
256256

257-
### 有效的括号
257+
### [20. 有效的括号](https://leetcode.cn/problems/valid-parentheses/)
258258

259259
>给定一个只包括 `'('``')'``'{'``'}'``'['``']'` 的字符串,判断字符串是否有效。
260260
>
@@ -274,6 +274,8 @@ public class Stack<E> extends Vector<E> {}
274274
275275
**思路**
276276
277+
左括号进栈,右括号匹配出栈
278+
277279
- 栈先入后出特点恰好与本题括号排序特点一致,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 `stack` 仍然为空
278280
279281
```java
@@ -308,7 +310,30 @@ public class Stack<E> extends Vector<E> {}
308310
>
309311
>**提示:**`气温` 列表长度的范围是 `[1, 30000]`。每个气温的值的均为华氏度,都是在 `[30, 100]` 范围内的整数。
310312
313+
**思路**
314+
315+
维护一个存储下标的单调栈,从栈底到栈顶的下标对应的温度列表中的温度依次递减。如果一个下标在单调栈里,则表示尚未找到下一次温度更高的下标。
316+
317+
正向遍历温度列表。
311318

319+
1. 栈为空,先入栈
320+
2. 如果栈内有元素,用栈顶元素对应的温度和当前温度比较,temperatures[i] > temperatures[pre] 的话,就把栈顶元素移除,把 pre 对应的天数设置为 i-pre,重复操作区比较,知道栈为空或者栈顶元素对应的温度小于当前问题,把当前温度索引入栈
321+
322+
```java
323+
public int[] dailyTemperatures_stack(int[] temperatures) {
324+
int length = temperatures.length;
325+
int[] result = new int[length];
326+
Stack<Integer> stack = new Stack<>();
327+
for (int i = 0; i < length; i++) {
328+
while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
329+
int pre = stack.pop();
330+
result[pre] = i - pre;
331+
}
332+
stack.add(i);
333+
}
334+
return result;
335+
}
336+
```
312337

313338

314339

node_modules/@vuepress/core/.temp/app-enhancers/global-components-11.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_modules/@vuepress/core/.temp/dynamic/vuepress_blog/frontmatterClassified.js

Lines changed: 57 additions & 57 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)