有一个非空的乱序数组,其中有若干个0。请将所有的0,移动到数组末尾。 编程用c++/python/ java其中的一种实现。
时间: 2023-03-19 19:22:11 浏览: 250
//写一个函数拷贝字符串-C++ 数组 一维数组 二维数组
Python实现:
```python
def move_zeros(nums):
count = 0 # 记录0的个数
for i in range(len(nums)):
if nums[i] != 0:
nums[count] = nums[i]
count += 1
while count < len(nums):
nums[count] = 0
count += 1
return nums
```
该函数遍历数组,将所有非0的元素移到数组前面,并记录0的个数count。然后将数组后面的count个元素置为0。
示例:
```python
>>> nums = [0, 1, 0, 3, 12]
>>> move_zeros(nums)
[1, 3, 12, 0, 0]
```
C语言实现:
```c
void move_zeros(int nums[], int length) {
int count = 0;
for (int i = 0; i < length; i++) {
if (nums[i] != 0) {
nums[count] = nums[i];
count++;
}
}
while (count < length) {
nums[count] = 0;
count++;
}
}
```
该函数遍历数组,将所有非0的元素移到数组前面,并记录0的个数count。然后将数组后面的count个元素置为0。
示例:
```c
int nums[] = {0, 1, 0, 3, 12};
move_zeros(nums, 5);
for (int i = 0; i < 5; i++) {
printf("%d ", nums[i]);
}
// 输出:1 3 12 0 0
```
Java实现:
```java
public int[] moveZeros(int[] nums) {
int count = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
nums[count] = nums[i];
count++;
}
}
while (count < nums.length) {
nums[count] = 0;
count++;
}
return nums;
}
```
该函数遍历数组,将所有非0的元素移到数组前面,并记录0的个数count。然后将数组后面的count个元素置为0。
示例:
```java
int[] nums = {0, 1, 0, 3, 12};
moveZeros(nums);
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
// 输出:1 3 12 0 0
```
阅读全文