1,用最少数量的箭引爆气球
先按照初始位置进行排序;
开始循环,当两个气球没有挨着的时候,count++;当两个气球挨着的时候更新最右边界的位置。
2,无重叠区间
这道题与弓箭射气球的题类似,程序几乎可以不发生改变,只有判断条件加上等于,认为,1,2和2,3不算在里面,弓箭的数量相当于是非交叉区间的数量,用总的减去弓箭数量就是最终的结果。
3,划分字母区间
先记录下来每一个字母的最远位置,用和之前定义26为的int数组,再填进去一样的方法;然后进行遍历,得到从开始遍历到现在所记录到的最远位置,如果与当前遍历的索引已知,就截出这一段。list.add记录下来。参考了代码随想录
4,合并区间
与射箭一样判断有没有重叠,再合并,其实就是用合并区间后左边界和右边界,作为一个新的区间,加入到result数组里就可以了。如果没有合并就把原区间加入到result数组。
list.getLast:得到最后一个,remove去掉,add加入;
5,单调递增的数字
从后向前遍历,如果这个数字小于前面的,久让前面的-1,start记录下当前索引;再遍历一遍,将从start到最后的值都赋值9;如果直接在第一遍遍历中就把赋值9写进去的话,就会出现问题,比如100,答案就会是90,而不是99了。因此,要循环两遍;