不同的写法可能会得到不同的结果。这取决于具体的代码实现和逻辑。
以下是一个示例问题和解决方法:
问题:给定一个整数数组,将所有奇数放在偶数前面,并保持它们的相对顺序不变。
解决方法1:使用两个指针,一个指向数组的开头,一个指向数组的末尾。遍历数组,如果遇到奇数,则将其放在指针1所指位置,并将指针1向后移动一位;如果遇到偶数,则将其放在指针2所指位置,并将指针2向前移动一位。最后,所有奇数会被放在偶数前面,并且它们的相对顺序不变。
public void rearrangeArray(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
if (nums[left] % 2 == 0 && nums[right] % 2 == 1) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
if (nums[left] % 2 == 1) {
left++;
}
if (nums[right] % 2 == 0) {
right--;
}
}
}
解决方法2:使用两个额外的数组,一个用于存储奇数,另一个用于存储偶数。遍历原始数组,将奇数放入奇数数组,将偶数放入偶数数组。最后,将奇数数组和偶数数组拼接在一起,得到新的结果。
public int[] rearrangeArray(int[] nums) {
int[] oddArray = new int[nums.length];
int[] evenArray = new int[nums.length];
int oddIndex = 0;
int evenIndex = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 2 == 1) {
oddArray[oddIndex++] = nums[i];
} else {
evenArray[evenIndex++] = nums[i];
}
}
System.arraycopy(oddArray, 0, nums, 0, oddIndex);
System.arraycopy(evenArray, 0, nums, oddIndex, evenIndex);
return nums;
}
这两种不同的写法会得到不同的结果。第一种方法会改变原始数组的顺序,将奇数放在偶数前面,但不保证奇数和偶数的相对顺序不变。而第二种方法会保持奇数和偶数的相对顺序不变,但会创建额外的数组。具体选择哪种方法取决于实际需求和优化要求。