Untitled

 avatar
unknown
java
6 months ago
1.8 kB
4
Indexable
import java.util.*;

public class Solution {
    
    public static int solution(int[] digits) {
        // Find the top three maximum numbers by a single pass
        int max1 = -1, max2 = -1, max3 = -1;

        for (int num : digits) {
            if (num > max1) {
                max3 = max2;
                max2 = max1;
                max1 = num;
            } else if (num > max2) {
                max3 = max2;
                max2 = num;
            } else if (num > max3) {
                max3 = num;
            }
        }

        // Now we need to combine these three numbers in the best possible way
        // Since the problem states using at most three digits, we consider 1, 2, or 3 of them
        int result = max1; // Best single digit
        
        if (max2 != -1) { // Check if we have a second digit
            result = Math.max(result, 10 * max1 + max2);
            result = Math.max(result, 10 * max2 + max1);
        }
        
        if (max3 != -1) { // Check if we have a third digit
            result = Math.max(result, 100 * max1 + 10 * max2 + max3);
            result = Math.max(result, 100 * max1 + 10 * max3 + max2);
            result = Math.max(result, 100 * max2 + 10 * max1 + max3);
            result = Math.max(result, 100 * max2 + 10 * max3 + max1);
            result = Math.max(result, 100 * max3 + 10 * max1 + max2);
            result = Math.max(result, 100 * max3 + 10 * max2 + max1);
        }

        return result;
    }

    public static void main(String[] args) {
        int[] digits1 = {7, 2, 3, 3, 4, 9};
        int[] digits2 = {0, 0, 5, 7};
        System.out.println(solution(digits1));  // Should return 974
        System.out.println(solution(digits2));  // Should return 75
    }
}
Editor is loading...
Leave a Comment