import java.util.Arrays; public class Fix45 { public static void main(String[] args) { assertArrays(new int[]{9, 4, 5, 4, 5, 9}, new int[]{5, 4, 9, 4, 9, 5}); assertArrays(new int[]{1, 4, 5, 4, 5}, new int[]{5, 4, 5, 4, 1}); assertArrays(new int[]{1, 1, 4, 5, 4, 5}, new int[]{5, 5, 4, 1, 4, 1}); assertArrays(new int[]{4, 5, 4, 5, 1}, new int[]{4, 5, 4, 1, 5}); assertArrays(new int[]{4, 5, 4, 5, 2}, new int[]{4, 2, 4, 5, 5}); } public static int[] fix45(int[] nums) { for (int i = 0; i < nums.length; i++) { if(nums[i] == 4 && nums[i + 1] != 5){ int location = i + 1; for (int j = 0; j < nums.length; j++) { if(nums[j] == 4 && nums[j + 1] == 5){ j++; continue; } if (nums[j] == 5) { int temp = nums[j]; nums[j] = nums[location]; nums[location] = temp; } } } } return nums; } private static void assertArrays(int[] expected, int[] input) { int[] actual = fix45(input); System.out.println(Arrays.toString(actual)); boolean status = Arrays.equals(expected, actual); System.out.println(status); } }