Posts

Showing posts from July, 2024

1105. Filling Bookcase Shelves

 JAVA class Solution { public int minHeightShelves ( int [][] books , int shelfWidth ) { int n = books . length ; int [] f = new int [ n + 1 ]; for ( int i = 1 ; i <= n ; ++ i ) { int w = books [ i - 1 ][ 0 ], h = books [ i - 1 ][ 1 ]; f [ i ] = f [ i - 1 ] + h ; for ( int j = i - 1 ; j > 0 ; -- j ) { w += books [ j - 1 ][ 0 ]; if ( w > shelfWidth ) { break ; } h = Math . max ( h , books [ j - 1 ][ 1 ]); f [ i ] = Math . min ( f [ i ], f [ j - 1 ] + h ); } } return f [ n ]; } } C++ class Solution { public: int minHeightShelves ( vector < vector < int >>& books , int shelfWidth ) { int n = books . size (); int f [ n + 1 ]; f [ 0 ]...

1653 - Minimum Deletions to Make String Balanced

 JAVA class Solution { public int minimumDeletions ( String s ) { int n = s . length (); int [] f = new int [ n + 1 ]; int b = 0 ; for ( int i = 1 ; i <= n ; ++ i ) { if ( s . charAt ( i - 1 ) == 'b' ) { f [ i ] = f [ i - 1 ]; ++ b ; } else { f [ i ] = Math . min ( f [ i - 1 ] + 1 , b ); } } return f [ n ]; } } C++ class Solution { public: int minimumDeletions ( string s ) { int n = s . size (); int f [ n + 1 ]; memset ( f , 0 , sizeof ( f )); int b = 0 ; for ( int i = 1 ; i <= n ; ++ i ) { if ( s [ i - 1 ] == 'b' ) { f [ i ] = f [ i - 1 ]; ++ b ; } else { f [ i ] = min ( f [ i - 1 ] + 1 , b ); ...

1395 - Count Number of Teams

 JAVA class Solution { public int numTeams ( int [] rating ) { int n = rating . length ; int ans = 0 ; for ( int i = 0 ; i < n ; ++ i ) { int l = 0 , r = 0 ; for ( int j = 0 ; j < i ; ++ j ) { if ( rating [ j ] < rating [ i ]) { ++ l ; } } for ( int j = i + 1 ; j < n ; ++ j ) { if ( rating [ j ] > rating [ i ]) { ++ r ; } } ans += l * r ; ans += ( i - l ) * ( n - i - 1 - r ); } return ans ; } } C++ class Solution { public: int numTeams ( vector < int >& rating ) { int n = rating . size (); int ans = 0 ; for ( int i = 0 ; i < n ; ++ i ) { int l = 0 , r = 0 ; ...

2045 - Second Minimum Time to Reach Destination

 JAVA class Solution { public int secondMinimum ( int n , int [][] edges , int time , int change ) { List < Integer >[] g = new List [ n + 1 ]; Arrays . setAll ( g , k -> new ArrayList <>()); for ( int [] e : edges ) { int u = e [ 0 ], v = e [ 1 ]; g [ u ]. add ( v ); g [ v ]. add ( u ); } Deque < int []> q = new LinkedList <>(); q . offerLast ( new int [] { 1 , 0 }); int [][] dist = new int [ n + 1 ][ 2 ]; for ( int i = 0 ; i < n + 1 ; ++ i ) { Arrays . fill ( dist [ i ], Integer . MAX_VALUE ); } dist [ 1 ][ 1 ] = 0 ; while (! q . isEmpty ()) { int [] e = q . pollFirst (); int u = e [ 0 ], d = e [ 1 ]; for ( int v : g [ u ]) { if ( d + 1 < dist [ v ][ 0 ]) { ...

2976 - Minimum Cost to Convert String I

 JAVA class Solution { public long minimumCost ( String source , String target , char [] original , char [] changed , int [] cost ) { final int inf = 1 << 29 ; int [][] g = new int [ 26 ][ 26 ]; for ( int i = 0 ; i < 26 ; ++ i ) { Arrays . fill ( g [ i ], inf ); g [ i ][ i ] = 0 ; } for ( int i = 0 ; i < original . length ; ++ i ) { int x = original [ i ] - 'a' ; int y = changed [ i ] - 'a' ; int z = cost [ i ]; g [ x ][ y ] = Math . min ( g [ x ][ y ], z ); } for ( int k = 0 ; k < 26 ; ++ k ) { for ( int i = 0 ; i < 26 ; ++ i ) { for ( int j = 0 ; j < 26 ; ++ j ) { g [ i ][ j ] = Math . min ( g [ i ][ j ], g [ i ][ k ] + g [ k ][ j ]); } ...