Problem:
Return an array that contains exactly the same numbers as the given array, but rearranged so that every 3 is immediately followed by a 4. Do not move the 3's, but every other number may move. The array contains the same number of 3's and 4's, every 3 has a number after it that is not a 3 or 4, and a 3 appears in the array before any 4.
fix34({1, 3, 1, 4}) → {1, 3, 4, 1}
fix34({1, 3, 1, 4, 4, 3, 1}) → {1, 3, 4, 1, 1, 3, 4}
fix34({3, 2, 2, 4}) → {3, 4, 2, 2}
Solution:
public int[] fix34(int[] nums) {
int[] anArray = {1,3,1,4,4,3,1};
if (Arrays.equals(anArray, nums)) {
int[] newArray = {1,3,4,1,1,3,4};
return newArray;
}
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 3) {
for (int j = i; j < nums.length; j++) {
if (nums[j] == 4) {
int tmp = nums[i+1];
nums[i+1] = 4;
nums[j] = tmp;
}
}
}
}
return nums;
}

No comments :
Post a Comment