Untitled

 avatar
unknown
plain_text
16 days ago
1.1 kB
3
Indexable
public int solutions3(int[] arr) {
    int n = arr.length;
    int[] freq = new int[360];
    for(int x : arr) freq[x]++;

    long totalCost = 0;
    for(int i = 1; i < 360; i++)
        totalCost += i*freq[i];

    long minCost = totalCost, curCost = totalCost;
    for(int i = 1; i < 360; i++) {
        curCost = curCost - (n-freq[i-1]) + freq[i-1] * 360;
        minCost = Math.min(minCost, curCost);
    }
    return (int)minCost;
}
public int solution2(int[] arr) {
    Arrays.sort(arr);
    int n = arr.length;
    int med = arr[n/2], sum = 0;
    for(int angle : arr) {
        int dif = Math.abs(angle - med);
        sum += Math.min(dif, 360-dif);
    }
    return sum;
}

public int solution(int[] arr) {
    int[] countArr = new int[5];
    for(int x : arr) countArr[x]++;

    int steps = 0, n = arr.length, medianPos = n/2, count = 0, median = 0;
    for(int i = 1; i <= 4; i++) {
        count += countArr[i];
        if(count > medianPos) {
            median = i;
            break;
        }
    }
    for(int i = 1; i <= 4; i++)
        steps += Math.abs(i-median) * countArr[i];

    return steps;
}
Leave a Comment