题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N=0;
cin>>N;
vector<int> ve(N); //注意初始化向量的写法
for(int i=0;i<N;i++){
cin>>ve[i];
}
//输入的都保存,然后应该要遍历
sort(ve.begin(),ve.end()); //升序
cout<<ve[0]<<endl;
for(int i=1;i<N;i++){ //这里注意不要让i=N,不然就溢出了,最后一个数值是ve[n-1]
if(ve[i]!=ve[i-1])
cout<<ve[i]<<endl;
}
return 0;
}
还有一种用set的方法可以看下:
#include <iostream>
#include <set>
int main() {
int N;
std::cin >> N;
std::set<int> uniqueNumbers; //使用 std::set<int> 来存储输入的数字。std::set 会自动去除重复的数字并且保持元素有序。
for (int i = 0; i < N; ++i) {
int num;
std::cin >> num;
uniqueNumbers.insert(num);
}
// 输出集合中的元素
for (const int& num : uniqueNumbers) {
std::cout << num << std::endl;
}
return 0;
}
另外补充下数组的排序,用sort函数时:
在 C++ 中,数组名可以被视为指向数组第一个元素的指针。因此,对于一个数组 arr,arr 本身是一个指向第一个元素的指针。
- arr 是指向数组第一个元素的指针。在这个例子中,arr 等价于 &arr[0],即指向数组第一个元素的地址。
- arr + n 是指向数组最后一个元素之后的位置的指针。在这个例子中,arr + n 等价于 &arr[n],即指向数组最后一个元素之后的位置的地址。
int arr[] = {5, 2, 9, 1, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
//计算数组长度 sizeof(arr)是整个数组 arr 在内存中占用的总字节数。sizeof(arr[0])是数组 arr 中单个元素的字节数。
// 使用 std::sort 对数组进行升序排序
std::sort(arr, arr + n);
