1. 无重叠区间
分析 : 因为贪心算法讲究找出局部最优,从而推出全局最优, 所以本题要找无重叠区间所要去除的最少区间个数 ,可以先按照每个区间的左端点对区间进行升序排序,如果当前区间左端点小于上一个区间的右端点,那么出现重复,一定要在这两个里面去除一个,至于去除哪一个,就涉及到了贪心的局部最优问题,要想当前跟下一个不容易重复,肯定是去除两个区间中右端点最大的,留下最小的!!!
2. 递增的三元子序列
分析 : 因为贪心算法讲究找出局部最优,从而推出全局最优, 本题的局部最优就是保证三元中的前两元left,right尽可能小且left < right,所以就一次遍历数组,如果当前数字大于right ,则三元递增产生 ;如果当前数字 < right && 当前数字 > left ,则更新 right 为 当前数字 ;如果当前数字 < left , 则更新left 为当前数字。
3. 划分字母区间
分析 : 因为贪心算法讲究找出局部最优,从而推出全局最优, 本题的局部最优就是保证划分区间的最后等于该区间所有字母中最后出现的最大位置。
{
var num = arr[j].charCodeAt() - 'a'.charCodeAt();
end = Math.max(end,last[num]); // last[]数组为统计的各个字母的最后出现位置
if(j===end) // 以此为界限划分
{
result.push(end-start+1);
start = j+1;
end = 0;
}
}