题目:定义一个长度为n的整型数组,输入n个元素的值,然后删除重复的数,输出删除后的数组
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main( )
{
int n;
int a[100];
int b[100] = {0};
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
b[a[i]]++;
if(b[a[i]]>1)
{
b[a[i]]--;
a[i] = -100;
}
}
for(int j=0;j<n;j++)
{
if(a[j]!=-100)
{
cout << a[j] << " ";
}
}
return 0;
}
代码关键逻辑解释: 若两个数字相同,则会被置于数组b的同一位置,此位置原值为0,当有一个值在这个位置时,+1,当与之相同的另一个数字出现时,再+1,此位置值变成了2,此时将数组b中该位置的值恢复为1,同时给a[i]标记,后续遍历时,数组a中该位置的值不再输出,从而成功删除重复的数,并输出删除后的数组;
代码特点:
着重考虑数组++的方式实现对重复数字的判断和数组设置的含义
int b[100]={0};
#nclude <iostream>
#include <algorithm>
using namespace std;
int main( )
{
int b[100] = {0};
for(int i=0;i<100;i++)
{
cout << b[i];
}
return 0;
}
输出结果:
注:此文章为感叹原代码作者写作之巧妙,用于日常记录学习
原文链接:(46条消息) 码蹄集新手村100题答案_每个脚印都值得被记录-CSDN博客
|