AI刷题-T5寻找最大葫芦-题解

295 阅读1分钟
import java.util.*;
public class Main {
    public static int[] solution(int n, int max, int[] array) {
        // Edit your code here
        int[] cardFrequencies = new int[15];
        for (int card : array) {
            cardFrequencies[card]++;
        }
        cardFrequencies[14] = cardFrequencies[1];

        int[] result = new int[2];
        int maxValue = Integer.MIN_VALUE;
        for (int i = 14;i>=2; i--) {
            if (cardFrequencies[i] >= 3) {
                for (int j = 14;j>=2 ; j--) {
                    if (i!= j && cardFrequencies[j] >= 2) {
                        if(i==14)i = 1;
                        if(j==14)j = 1;
                        int sum = (i * 3) + (j * 2);
                        if (sum <= max && sum > maxValue) {
                            maxValue = sum;
                            result[0] = i;
                            result[1] = j;
                            return result;
                        }
                    }
                }
            }
        }
        if (result[0] == 0 && result[1] == 0) {
            return new int[]{0, 0};
        } else {
            return result;
        }
    }

    public static void main(String[] args) {
        // Add your test cases here
        
        System.out.println(java.util.Arrays.equals(solution(9, 34, new int[]{6, 6, 6, 8, 8, 8, 5, 5, 1}), new int[]{8, 5}));
        System.out.println(java.util.Arrays.equals(solution(9, 37, new int[]{9, 9, 9, 9, 6, 6, 6, 6, 13}), new int[]{6, 9}));
        System.out.println(java.util.Arrays.equals(solution(9, 40, new int[]{1, 11, 13, 12, 7, 8, 11, 5, 6}), new int[]{0, 0}));
    }
}