基础准备
- 输入的读取解析和格式输出
- 基础类型
- bit,byte,浮点型,8进制/10进制/16进制,补码
基础数据结构
字符串
- 标准库
- 解析
- 匹配
拼接
"".join(list)
def restoreString(self, s: str, indices: List[int]) -> str:
res = [''] * len(s)
for i in range(len(indices)):
res[indices[i]] = s[i]
return "".join(res)
线性表
- 数组
- 动态数组
队列
栈
leetcode 20
链表
python中链表表示
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
def __repr__(self):
if self:
return "{}->{}".format(self.val,self.next)
示例题目
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3
代码
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
p = head
while p != None and p.next != None:
if p.val == p.next.val:
p.next = p.next.next
else:
p = p.next
return head
if __name__=="__main__":
l1=ListNode(1)
l1.next=ListNode(2)
l1.next.next=ListNode(2)
l1.next.next.next=ListNode(3)
print(l1)
s = Solution()
s2 = s.deleteDuplicates(l1)
print(s2)
结果
1->2->2->3->None
1->2->3->None
leetcode 155
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.s = []
self.front = None
def push(self, x: int) -> None:
if not self.s:
self.front = x
self.s.append(x)
def pop(self) -> None:
self.s.pop()
# if self.s:
# self.s.remove(self.s[-1])
def top(self) -> int:
if not self.s:
return self.front
else:
return self.s[-1]
def getMin(self) -> int:
# print(sorted(self.s))
# print(self.s.sort())
return sorted(self.s)[0]
main函数测试
if __name__ == '__main__':
m = MinStack()
m.push(-2);
m.push(0);
m.push(-3);
print(m.s)
m.pop()
print(m.s)
m.pop()
print(m.s)
m.pop()
print(m.s)
执行结果
[-2, 0, -3]
[-2, 0]
[-2]
[]
哈希表
高级数据结构
常用算法及思想
排序算法
快速排序
冒泡排序
leetcode 1528
def sorted_2(self, s_list):
for i in range(len(s_list)):
for j in range(i, len(s_list)):
if s_list[i][0] > s_list[j][0]:
temp = s_list[j]
s_list[j] = s_list[i]
s_list[i] = temp
print(s_list)