code题目链接:https://leetcode.cn/problems/design-an-ordered-stream/submissions/
解题:
class OrderedStream(object):
def __init__(self, n):
"""
:type n: int
"""
# 参数预设,预设n列表最快的方式
self.data = [None] * (n+1)
self.ptr = 1
def insert(self, idKey, value):
"""
:type idKey: int
:type value: str
:rtype: List[str]
"""
# 这里需要继承init的参数,包括 data 和 ptr
data = self.data
result = list()
data[idKey] = value
while self.ptr < len(data) and data[self.ptr] is not None:
result.append( data[self.ptr] )
self.ptr += 1
print(result)
return result
acwing题目链接:算法基础课-基础算法-快速排序-快速排序https://www.acwing.com/problem/content/787/
思想:
- 分治的思想
- 左边的都是小于flag 值的列表,右边都都是大于flag值的列表
- flag值可以取中间值即可,可以当做一个惯例
def quickSort( data, left, right ):
if left < right:
i = left - 1
j = right + 1
# 一般来说,mid值取中间值即可
mid = data[(i + j) // 2]
while i < j:
while 1:
i = i + 1
# 这里的mid值其实使用 equal即可
if data[i] >= mid:
break
while 1:
j = j-1
if data[j] <= mid:
break
if i < j:
data[i], data[j] = data[j], data[i]
quickSort(data, left, j)
quickSort(data, j+1, right)
if __name__ == '__main__':
N = int(input())
data = list( map(int, input().split() ) )
# print(data)
# N= 5
# data = [3,1,2,4,5]
quickSort(data, 0, N-1)
print(' '.join(list(map(str, data))))
知识点:
- 列表可以直接 a = [ ], 新建一个n的列表 为 [None] * n
- 方法中需要继承类init的成员变量
- 控制台输入python可以用 input() 这种方式来获取到