LRUCache使用排序字典的简单实现:
class LRUCache:
def __init__(self, capacity=256):
self.od = OrderedDict()
self.capacity = capacity
def get(self, key):
if key in self.od:
value = self.od.get(key)
self.od.move_to_end(key)
return value
def put(self, key, value):
if key in self.od:
del self.od[key]
self.od[key] = value
else:
self.od[key] = value
if len(self.od) > self.capacity:
self.od.popitem(last=False)
递归实现快速排序:
def quick_sort(array: list):
if len(array) < 2:
return array
pivot_index = 0
pivot = array[pivot_index]
less_list = [i for i in array[pivot_index + 1:] if i <= pivot]
great_list = [i for i in array[pivot_index + 1:] if i > pivot]
return quick_sort(less_list) + [pivot] + quick_sort(great_list)
if __name__ == '__main__':
sorted = quick_sort([2,1,4,6,5,7])
print(sorted)
二分查找:
1.递归实现
def binary_search(item, alist):
n = len(alist)
if 0 == n:
return False
mid = n // 2
if alist[mid] == item:
return True
elif alist[mid] > item:
return binary_search(item, alist[:mid])
else:
return binary_search(item, alist[mid + 1:])
2.while循环实现
def binary_search2(item, alist):
start = 0
end = len(alist) - 1
while start <= end:
mid = (start + end) // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
end = mid - 1
else:
start = mid + 1
return False