Untitled
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