Posts

Showing posts from June, 2024

45 - Jump Game II

 JAVA class Solution { public int jump ( int [] nums ) { int ans = 0 , mx = 0 , last = 0 ; for ( int i = 0 ; i < nums . length - 1 ; ++ i ) { mx = Math . max ( mx , i + nums [ i ]); if ( last == i ) { ++ ans ; last = mx ; } } return ans ; } } C++ class Solution { public: int jump ( vector < int >& nums ) { int ans = 0 , mx = 0 , last = 0 ; for ( int i = 0 ; i < nums . size () - 1 ; ++ i ) { mx = max ( mx , i + nums [ i ]); if ( last == i ) { ++ ans ; last = mx ; } } return ans ; } };

44 - Wildcard Matching

 JAVA class Solution { public boolean isMatch ( String s , String p ) { int m = s . length (), n = p . length (); boolean [][] dp = new boolean [ m + 1 ][ n + 1 ]; dp [ 0 ][ 0 ] = true ; for ( int j = 1 ; j <= n ; ++ j ) { if ( p . charAt ( j - 1 ) == '*' ) { dp [ 0 ][ j ] = dp [ 0 ][ j - 1 ]; } } for ( int i = 1 ; i <= m ; ++ i ) { for ( int j = 1 ; j <= n ; ++ j ) { if ( s . charAt ( i - 1 ) == p . charAt ( j - 1 ) || p . charAt ( j - 1 ) == '?' ) { dp [ i ][ j ] = dp [ i - 1 ][ j - 1 ]; } else if ( p . charAt ( j - 1 ) == '*' ) { dp [ i ][ j ] = dp [ i - 1 ][ j ] || dp [ i ][ j - 1 ]; } } } return dp [ m ][ n ]; } ...

43 - Multiply Strings

 JAVA class Solution { public String multiply ( String num1 , String num2 ) { if ( "0" . equals ( num1 ) || "0" . equals ( num2 )) { return "0" ; } int m = num1 . length (), n = num2 . length (); int [] arr = new int [ m + n ]; for ( int i = m - 1 ; i >= 0 ; -- i ) { int a = num1 . charAt ( i ) - '0' ; for ( int j = n - 1 ; j >= 0 ; -- j ) { int b = num2 . charAt ( j ) - '0' ; arr [ i + j + 1 ] += a * b ; } } for ( int i = arr . length - 1 ; i > 0 ; -- i ) { arr [ i - 1 ] += arr [ i ] / 10 ; arr [ i ] %= 10 ; } int i = arr [ 0 ] == 0 ? 1 : 0 ; StringBuilder ans = new StringBuilder (); for (; i < arr . length ; ++ i )...

42 - Trapping Rain Water

 JAVA public class Trapping_Rain_Water { public static void main ( String [] args ) { Trapping_Rain_Water out = new Trapping_Rain_Water (); Solution_local_minimum s = out . new Solution_local_minimum (); System . out . println ( s . trap ( new int []{ 5 , 2 , 1 , 2 , 1 , 5 })); } C++ class Solution { public: int trap ( vector < int >& A ) { int N = A . size (), ans = 0 ; vector < int > left ( N , 0 ), right ( N , 0 ); for ( int i = 1 ; i < N ; ++ i ) left [ i ] = max ( left [ i - 1 ], A [ i - 1 ]); for ( int i = N - 2 ; i >= 0 ; -- i ) right [ i ] = max ( right [ i + 1 ], A [ i + 1 ]); for ( int i = 1 ; i < N - 1 ; ++ i ) ans += max ( 0 , min ( left [ i ], right [ i ]) - A [ i ]); return ans ; } };

41 - First Missing Positive

 JAVA class Solution { public int firstMissingPositive ( int [] nums ) { int n = nums . length ; for ( int i = 0 ; i < n ; ++ i ) { while ( nums [ i ] >= 1 && nums [ i ] <= n && nums [ i ] != nums [ nums [ i ] - 1 ]) { swap ( nums , i , nums [ i ] - 1 ); } } for ( int i = 0 ; i < n ; ++ i ) { if ( i + 1 != nums [ i ]) { return i + 1 ; } } return n + 1 ; } private void swap ( int [] nums , int i , int j ) { int t = nums [ i ]; nums [ i ] = nums [ j ]; nums [ j ] = t ; } }   C++ class Solution { public: int firstMissingPositive ( vector < int >& nums ) { int n = nums . size (); for ( int i = 0 ; i < n ; ++ i ) { while ( nums [ i...