452. 用最少数量的箭引爆气球
题目
链接
代码
class Solution {
public int findMinArrowShots ( int [ ] [ ] points) {
Arrays . sort ( points, ( a, b) -> Integer . compare ( a[ 0 ] , b[ 0 ] ) ) ;
int count = 1 ;
for ( int i= 1 ; i< points. length; i++ ) {
if ( points[ i- 1 ] [ 1 ] < points[ i] [ 0 ] ) {
count++ ;
} else {
points[ i] [ 0 ] = Math . max ( points[ i] [ 0 ] , points[ i- 1 ] [ 1 ] ) ;
points[ i] [ 1 ] = Math . min ( points[ i] [ 1 ] , points[ i- 1 ] [ 1 ] ) ;
}
}
return count;
}
}
435. 无重叠区间
题目
链接
代码
class Solution {
public int eraseOverlapIntervals ( int [ ] [ ] intervals) {
int count = 0 ;
Arrays . sort ( intervals, ( a, b) -> Integer . compare ( a[ 0 ] , b[ 0 ] ) ) ;
for ( int i = 1 ; i< intervals. length; i++ ) {
if ( intervals[ i- 1 ] [ 1 ] > intervals[ i] [ 0 ] ) {
count++ ;
intervals[ i] [ 1 ] = Math . min ( intervals[ i] [ 1 ] , intervals[ i- 1 ] [ 1 ] ) ;
}
}
return count;
}
}
763. 划分字母区间
题目
链接
代码
class Solution {
public List < Integer > partitionLabels ( String s) {
int [ ] hash = new int [ 26 ] ;
char [ ] arr = s. toCharArray ( ) ;
for ( int i = 0 ; i< arr. length; i++ ) {
hash[ arr[ i] - 'a' ] = i;
}
int pre = - 1 ;
int cur = 0 ;
List < Integer > result = new ArrayList ( ) ;
for ( int i = 0 ; i< arr. length; i++ ) {
cur = Math . max ( cur, hash[ arr[ i] - 'a' ] ) ;
if ( cur== i) {
result. add ( cur- pre) ;
pre = i;
}
}
return result;
}
}
56. 合并区间
题目
链接
代码
class Solution {
public int [ ] [ ] merge ( int [ ] [ ] intervals) {
Arrays . sort ( intervals, ( a, b) -> Integer . compare ( a[ 0 ] , b[ 0 ] ) ) ;
List < int [ ] > result = new ArrayList ( ) ;
for ( int i = 1 ; i< intervals. length; i++ ) {
if ( intervals[ i- 1 ] [ 1 ] >= intervals[ i] [ 0 ] ) {
intervals[ i] [ 0 ] = Math . min ( intervals[ i- 1 ] [ 0 ] , intervals[ i] [ 0 ] ) ;
intervals[ i] [ 1 ] = Math . max ( intervals[ i- 1 ] [ 1 ] , intervals[ i] [ 1 ] ) ;
} else {
result. add ( intervals[ i- 1 ] ) ;
}
}
result. add ( intervals[ intervals. length- 1 ] ) ;
return result. toArray ( new int [ 0 ] [ ] ) ;
}
}