1. 贪心算法问题: 根据身高重建队列
我们先根据身高来排序。然后按照前面高的人数进行排序。
具体实现如下:
people=[[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
def reconstruct_Queue(peopleList):
#先按照身高进行排序
peopleList = sorted(peopleList, key=lambda x: (-x[0], x[1]))
print(peopleList)
result = []
#按照前面高的人数插入指定位置
for item in peopleList:
result.insert(item[1], item)
return result
print(reconstruct_Queue(people))
2. 动态规划问题: 三角形最小路径和
nums_List=[[2],[3,4],[6,5,7],[4,1,8,3]]
def minimumTotal(List):
if len(List) == 0:
return 0
for i in range(len(List) - 2,-1,-1):
for j in range(len(List[i])):
List[i][j] += min(List[i + 1][j], List[i + 1][j + 1])
return List[0][0]
print(minimumTotal(nums_List))
运行结果就是我们预期的结果11.