刷题记录合辑

一篇记录多题:思路 → 代码 → 优化 → 总结 → 相关题目
标题不含题号,题号写在正文与 description 中。


71. 简化路径

思路
典型栈题,流程:

  1. / 分割路径;
  2. 跳过 '''.';遇 '..' 弹栈;否则入栈;
  3. 栈空返回 /,否则 "/" + "/".join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)

总结
关注三类特殊片段:'''.''..';用栈实现路径归约。

71. 简化路径

思路
典型栈题,流程:

  1. / 分割路径;
  2. 跳过 '''.';遇 '..' 弹栈;否则入栈;
  3. 栈空返回 /,否则 "/" + "/".join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)
1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def simplifyPath(self, path: str) -> str:
stack = []
for part in path.split('/'):
if part in ('', '.'):
continue
if part == '..':
if stack:
stack.pop()
else:
stack.append(part)
return '/' if not stack else '/' + '/'.join(stack)

总结
关注三类特殊片段:'''.''..';用栈实现路径归约。


相关题目

    1. 矩阵置零(原地矩阵操作)
    1. 移动零(数组重排模板)
    1. 旋转图像(矩阵原地旋转)
    1. 二叉树的右视图(层序/DFS)

知识点小结

  • 栈:路径归约、括号匹配、表达式求值等
  • 模拟:生命游戏、棋盘/网格类,边界与状态编码是关键
  • 原地更新:位或标记减少额外空间
  • 位运算技巧:状态压缩、掩码读取