C语言删去数组中重复的数字,使之只剩一个。数组中的数已按由小到大的顺序排列。
时间: 2024-05-09 19:14:32 浏览: 114
你可以通过遍历一遍数组,同时用一个指针记录当前不重复的数字应该存放的位置。如果当前数字与前一个数字相同,则跳过该数字;否则将该数字存入指针所指向的位置,并将指针向后移动一位。代码实现如下:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 1, 2, 2, 2, 3, 4, 4, 5, 5};
int len = sizeof(arr) / sizeof(arr[0]);
int i, j = 0;
for (i = 1; i < len; i++) {
if (arr[i] != arr[j]) {
j++;
arr[j] = arr[i];
}
}
for (i = 0; i <= j; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:1 2 3 4 5
相关问题
删去数组中重复的数字,使之只剩一个。数组中的数已按由小到大的顺序排列,用c语言实现
可以使用双指针法来实现:
```c
int removeDuplicates(int* nums, int numsSize){
if (numsSize == 0) return 0;
int i = 0;
for (int j = 1; j < numsSize; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
```
这里定义两个指针 i 和 j,i 指向当前已经处理好的不重复的数组的尾部,j 用来遍历整个数组。当发现 nums[i] != nums[j] 时,说明 j 指向的数字是一个新的不重复的数字,将其放到 nums[i+1] 的位置,并将 i 加 1。最后返回长度即可。
删去数组中重复的数字,使之只剩一个。数组中的数已按由小到大的顺序排列,用c语言数组加循环结构实现
可以使用数组加循环结构来实现:
```c
#include <stdio.h>
int main() {
int nums[] = {1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5};
int len = sizeof(nums) / sizeof(int);
int i, j;
for (i = 0, j = 1; j < len; j++) {
if (nums[i] != nums[j]) {
nums[++i] = nums[j];
}
}
for (int k = 0; k <= i; k++) {
printf("%d ", nums[k]);
}
return 0;
}
```
这里使用了两个循环变量 i 和 j,i 表示当前不重复的元素的最后一个位置,j 表示当前遍历到的元素位置。如果 nums[i] != nums[j],说明遇到了一个新的不重复的元素,将其放到 nums[i+1] 的位置,同时将 i 加 1。最后遍历整个数组,输出前 i+1 个元素即可。
阅读全文