题解 | #明明的随机数#
明明的随机数
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);