/*
前几天去爬泰山了,一直没更新,上山时还没什么感觉,下山后简直要崩溃啊,骨头都散了,继续更新......
*/
第11题:移除数组中的重复元素
给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度。
例如:
数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2}
要求:
不能新开数组分配额外的空间。即常数空间限制。
提示:
输入一个整数n,以及其对应的数组A[n],输出新数组长度
样例输入
5 0 0 1 1 2
样例输出
3
解析:
#include <stdio.h> int main() { /*i是循环变量,n和A[]是题目要求,temp是一个临时值,用来存储 的值与A[i+1]比较,如果相等则把下一个值置空,反之将A[i+1]赋值给temp count是置空的数目,用原数组长度减去置空数即为新数组长度*/ int i,n,A[1000],temp,count = 0; scanf("%d",&n); for(i = 0;i < n;i++) { scanf("%d",&A[i]); } temp = A[0]; for(i = 1;i < n;i++) { if(A[i] == temp) { A[i] = ' '; count++; } else temp = A[i]; } printf("%d\n",n-count); return 0; }
如果看不懂欢迎留言提问或者留下邮箱!!!o(∩_∩)o
时间: 2024-12-26 09:56:44