程序=数据结构+算法

数据结构就是设计数据以何种方式组织并存储在计算机中。列表、集合与字典等都是一种数据结构。

小Tips:列表中的元素是怎样存储的,操作的时间复杂度是多少?

Python将数存放在一个内存单元中,在列表中的元素指向那个内存单元。所以列表中的元素在内存单元中可能在一起,也可能不在一起。

[].insert()和[].remove()的时间复杂度为o(n)
[].append()和[].pop()的时间复杂度为o(1)

栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表。

栈的特点:后进先出

栈的基本操作:

  • 进栈(压栈):push
  • 出栈:pop
  • 取栈顶(看看栈顶是谁):gettop 

Python中实现栈:

进栈函数:append
出栈函数:pop
查看栈顶函数:li[-1]

小Tips:

递归出错的原因是:爆栈

示例:给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配。

思路:检查字符串是否包含"{","[","("如果包含则将其入栈,遇到"}","]",")"时检查当前栈顶,相同则将其出栈,否则返回False

 1 def check_kuohao(str):
 2     stack = []
 3     for i in str:
 4         if i in {'{','[','('}:
 5             stack.append(i)
 6         elif i == '}':
 7             if len(stack) > 0 and stack[-1] == '{':
 8                 stack.pop()
 9             else:
10                 return False
11         elif i == ']':
12             if len(stack) > 0 and  stack[-1] == '[':
13                 stack.pop()
14             else:
15                 return False
16         elif i == ')':
17             if len(stack) > 0 and stack[-1] == '(':
18                 stack.pop()
19             else:
20                 return False
21 
22     if len(stack) == 0:
23         return True
24     else:
25         return False
26 
27 print(check_kuohao('([)]'))
View Code

相关文章: