唠嗑
快开学了,不能再摆了!!!开始刷题
2022/9/3
好家伙,好久不刷题,全部忘光了,没反应过来是经典的贪心,动态规划搞半天,都忘了,也没弄懂,开始复习吧!!
这里非常推荐北京航空航天大学的《算法设计与分析》,是根据《算法导论》大黑书讲的。
引言
题链接:最长链数
今天的题其实考察的是一个很经典的贪心算法案例:活动时间最优规划
今天的最长链数,与经典活动规划案例几乎完全相同,只是换了种说法
解题步骤
将活动开始时间和结束时间看成数对
- 步骤一:将数对按照pairs中元素的的第二个位置的数值的大小升序,快排时间复杂度是O(nlogn)
- 步骤二 :贪心策略
- 详细解释:看北航算法与设计 活动选择
代码
class Solution {
public int findLongestChain(int[][] pairs) {
//类似贪心的活动策略
//first step: 根据data[j,0]的值进行快排
//second step: 贪心就可以算得最大链数
Arrays.sort(pairs,(a,b)-> a[1]-b[1]);
int max = 1,temp = pairs[0][1];
for(int i = 1;i < pairs.length;i++){
if(pairs[i][0] > temp){
max++;
temp = pairs[i][1];
}
}
return max;
}
}
动态规划
此解法待我复习一下
…