数组反转编程题怎么做的

时间:2025-01-28 06:56:26 网络游戏

数组反转的编程题可以通过以下几种方法实现:

方法一:创建新数组并反向放入

1. 创建一个等长的数组,反向放入元素,最后改变引用即可。

```java

int[] nums = new int[]{3, 4, 6};

int[] temp = new int[nums.length];

for (int i = nums.length - 1; i >= 0; i--) {

temp[i] = nums[nums.length - 1 - i];

}

nums = temp;

for (int i = 0; i < nums.length; i++) {

System.out.println(nums[i]);

}

```

方法二:利用交换的方式

1. 定义原始数组。

2. 交换反转。

```java

int[] nums = new int[]{3, 4, 6};

for (int i = 0; i < nums.length / 2; i++) {

int temp = nums[nums.length - 1 - i];

nums[nums.length - 1 - i] = nums[i];

nums[i] = temp;

}

for (int i = 0; i < nums.length; i++) {

System.out.println(nums[i]);

}

```

方法三:使用内置函数

1. 许多编程语言都提供了内置的函数来简化数组反转的操作。

Python

```python

arr = [1, 2, 3, 4, 5]

reversed_arr = arr[::-1]

print(reversed_arr) 输出: [5, 4, 3, 2, 1]

```

JavaScript

```javascript

let arr = [1, 2, 3, 4, 5];

let reversedArr = arr.reverse();

console.log(reversedArr); // 输出: [5, 4, 3, 2, 1]

```

Java

```java

import java.util.Arrays;

import java.util.Collections;

public class Main {

public static void main(String[] args) {

Integer[] arr = {1, 2, 3, 4, 5};

List list = Arrays.asList(arr);

Collections.reverse(list);

System.out.println(list); // 输出: [5, 4, 3, 2, 1]

}

}

```

方法四:双指针法

1. 定义两个指针,一个指向数组开头,一个指向数组结尾,交换两个指针所指向的元素,然后向中间移动,直到两个指针相遇。

```python

def reverse_array(arr):

left = 0

right = len(arr) - 1

while left < right:

arr[left], arr[right] = arr[right], arr[left]

left += 1

right -= 1

return arr

```

方法五:原地反转

1. 通过三次反转实现原地反转。

```java

class Solution {

public void rotate(int[] nums, int k) {

int idx = k % nums.length;

reverseArray(nums, 0, nums.length - 1);

reverseArray(nums, 0, idx - 1);

reverseArray(nums, idx, nums.length - 1);

}

public void reverseArray(int[] nums, int begin, int end) {

while (begin < end) {

int tmp = nums[end];

nums[end] = nums[begin];

nums[begin] = tmp;

begin++;

end--;

}

}

}

```

总结

以上方法各有优缺点,选择哪种方法取决于具体的需求和编程语言的特性。如果需要原地反转且对性能有较高要求,可以使用双指针法或原地反转方法。如果希望代码简洁易读,可以使用内置函数。