void insertSort ( int * a, int n) {
for ( int i = 1 ; i < n; ++ i) {
int temp = a[ i] ;
int j = i - 1 ;
while ( j >= 0 && temp < a[ j] ) {
a[ j + 1 ] = a[ j] ;
j-- ;
}
a[ j + 1 ] = temp;
}
}
int maxProductDifference ( int * nums, int numsSize) {
insertSort ( nums, numsSize) ;
int a = nums[ numsSize - 1 ] * nums[ numsSize - 2 ] ;
int b = nums[ 0 ] * nums[ 1 ] ;
return a - b;
}
int maximum69Number ( int num) {
int stack[ 7 ] , top = 0 ;
while ( num) {
stack[ top++ ] = num % 10 ;
num /= 10 ;
}
for ( int i = top - 1 ; i >= 0 ; -- i) {
if ( stack[ i] == 6 ) {
stack[ i] = 9 ;
break ;
}
}
int res = 0 ;
while ( top-- ) {
res = res * 10 + stack[ top] ;
}
return res;
}
int partitionString(char* s) {
int ans = 0;
int hash[26];
memset(hash, 0, sizeof(hash));
for(int i = 0; s[i]; ++i) {
if( hash[ s[i] - 'a' ] ) {
memset(hash, 0, sizeof(hash));
++ans;
}
hash[ s[i] - 'a' ] = 1;
}
return ans + 1;
}
bool lemonadeChange(int* bills, int billsSize) {
int b5 = 0, b10 = 0;
for(int i = 0; i < billsSize; ++i) {
if(bills[i] == 5) {
b5++;
}else if(bills[i] == 10) {
if(b5 < 1) {
return false;
}
b5--, b10++;
}else if(bills[i] == 20) {
if(b10 > 0) {
if(b5 < 1) {
return false;
}
b10--,b5--;
}else if(b5 >= 3) {
b5 -= 3;
}else {
return false;
}
}
}
return true;
}