例如:a[10] = {20,40,32,67,40,20,89,300,400,15}
结果是:15 20 32 40 67 89 300 400。
思路
主思路:判断相邻的是否是相同的数字,然后只留下一个数字就可以。(这种类似的题都同理)
根据主思路,然后开始续写。可以先排序(将相同的数字放到一起),再根据上面。
代码实现
首先实现排序,最简单的冒泡排序就可以。
这里n = 10;代表数组中的个数。
for (int i=0; i<n- 1; i++) {
for (int j=0;j<n-1-i;j++) {
int tmp = 0;
if (a[j] >a[j +1]) {
tmp=a[j];
a[j]= a[j + 1];
a[j + 1] = tmp;
}
}
}
开始去重,只保留一个数字例如:{15,15}结果是{15}。
思路:创建一个新的数组ans[205]。如果有相邻的数字不一样就把前面的数字放进去。
int b = 0;
for(int i = 0; i < n; i++){
if(i != 0 && a[i] != a[i - 1]){ //从a[10]数组的第2个数组开始判断,这个最多只能将倒数第二个数字放进去。
ans[b++] = a[i - 1]; //如果相邻的数字不一样,就把前面的数字放进徐
}
}
这时arr[7] = {15,20,32,40,67,89,300}。会发现有一个400没有存进去,所以应该补一个:
ans[b++] = a[n - 1];