Untitled
unknown
plain_text
9 months ago
1.1 kB
5
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;
}Editor is loading...
Leave a Comment