
算法分析
qq_36346625
这个作者很懒,什么都没留下…
展开
-
哪个位置的人两两互相看不见?
题目描述:有n根柱子,柱子高度不定,站在高柱子上的人看得见低柱子上的人,如果两个人中间有高于他们的柱子,他们互相看不见。问有多少组互相两两看不见的人。假设数组a = [0, 0, 1, 0, 0, 0, 5, 4, 3, 0]p = [A, B, C, D, E, F, G, H, I, J]表示有10根柱子,a[i]表示柱子的高度,站在第1根柱子上的A和站在第2根柱子上的B,他们柱子高度一样,他俩互相看得见。站在第1根柱子上的A和站在第4根柱子上的B,他们柱子高度一样,但中间被第3根柱子(a原创 2021-09-19 12:29:33 · 140 阅读 · 0 评论 -
【01】设计一个有getMin功能的栈
/*说明:这些例子来自 左程云著的《程序员代码面试指南 IT名企算法与数据结构题目最优解》。代码中的注释是自己的理解。*//*【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作【要求】1.pop、push、getMin操作的时间复杂度都是O(1)2.设计的栈类型可以使用现成的栈结构【解答】:在设计上使用两个栈,一个栈用来保存当前栈中的元素,记为stackData;另外一个栈用于保存每一步中的最小值,记为stackMin。*//*方案1*/public c原创 2021-02-25 13:11:06 · 110 阅读 · 0 评论 -
降低递归算法复杂习性的途径
插入排序----子问题不均衡,合并次数多从而时间多。合并排序----子问题均衡,合并次数少=logn次,从而时间少。降低递归算法复杂习性的途径1、代数变换,减少子问题个数。递归算法就是不断地处理子问题,如果把不均衡的子问题变成均衡的子问题,那么递归的时间复杂度就会下降。2、预处理。可能结合具体例子具体分析。主要一点就是递归算法中的处理步尽可能提到递归过程之外,作为预处理。以后碰到再补充。...原创 2020-03-11 10:48:54 · 594 阅读 · 0 评论