第一行输入一个整数
,代表明明生成的数字个数。
此后
行,第
行输入一个整数
,代表明明生成的随机整数。
输出若干行,每行输出一个整数,代表输入数据排序后的结果。第一行输出最小的数字。
3 2 2 1
1 2
提供一个边输入边申请空间排序的解法
#include <stdio.h> int cmp(int *a, int *b){ return *a-*b; } int main(){ int N = 0; //输入为空时结束 while(~scanf("%d\n",&N)){ int num = 0; //留出一个位置用于设置结束条件 int *p = (int *)malloc(sizeof(int)*(N+1)); //清空内存 memset(p,0,sizeof(int)*(N+1)); for(int i=0; i<N; i++){ scanf("%d\n",&p[i]); } //快排函数运用,只排序前N个 qsort(p,N,sizeof(int),cmp); int *t = p; //不清空内存就要在这设置 t[N] = '\0'; //用while的坏处就是结尾后面如果连接别的数据就会继续循环 while(*t != '\0'){ // if(*t == num){ // *t++; // continue; // } // else{ // num = *t++; // printf("%d\n",num); // } if(*t != *(t-1)) printf("%d\n",*t); *t++; } free(p); t = NULL; } return 0; }
while(len = parseInt(readline(), 10)) { const buffer = Array(len).fill(0).map(() => parseInt(readline(), 10)); console.log([...new Set(buffer.sort((a, b) => a - b))].join('\n')) }
#include<iostream> using namespace std; int main() { int data[1001] = {0}; int n; int d; int max_index; while(cin>>n) {max_index = 0;while(n--) { cin >> d; data[d] = 1; max_index = d > max_index ? d : max_index; } for(int i=1;i <= max_index; i++) { if (data[i] == 1) { cout << i << '\n'; data[i] = 0; } } } }
// 自测没问题,保存并提交就出问题了,牛客你为什么这么烂!!!! const listNum = []; var data = ''; var size = 0; while(data = readline()){ if (size === 0) { size = data } else { size--; listNum.push(data); } } const sortList = listNum.sort((a, b) => a - b); console.log(sortList .filter((item, index) => item !== sortList[index + 1]) .join('\n')) // 自测没问题,保存并提交就出问题了,牛客你为什么这么烂!!!!
var arr=[]; var start=0; var num=0; while(line=parseInt(readline())){ if(start==0){ num=line; } else if(start<=num) { arr.push(line); } else{ start=0; num=line; } start++; } arr.sort((a,b)=>{return a-b}); for(var i=0;i<arr.length;i++){ if(i==0) console.log(arr[0]); else if(arr[i]==arr[i-1]) continue; else console.log(arr[i]); }(javascript v8 代码)题目有错误。输入跟实际输入不一致,导致我的代码一直运行不了。
#include<iostream> using namespace std; short handle(short*arr,short start,short end){ while(start<end){ while(start<end&&arr[start]<=arr[end])--end; short tmp=arr[start]; arr[start]=arr[end]; arr[end]=tmp; while(start<end&&arr[start]<=arr[end])++start; tmp=arr[start]; arr[start]=arr[end]; arr[end]=tmp; } return start; } void quick_sort(short *arr,short start,short end){ if(start>=end)return; short tmp=handle(arr,start,end); quick_sort(arr,start,tmp-1); quick_sort(arr,tmp+1,end); } int main(){ short n; while(cin>>n){ short end=n-1,tmp; short arr[n]; while(n>0&&cin>>tmp){ arr[end+1-n]=tmp; --n; } quick_sort(arr,0,end); int i=0,j=1; cout<<arr[0]<<endl; for(;j<=end;++i,++j) if(arr[i]!=arr[j])cout<<arr[j]<<endl; } }
//再次感受到sort函数的厉害之处 #include<iostream> #include<algorithm> using namespace std; int main(){ int n; while(cin>>n){ int* a=new int[n]; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); cout<<a[0]<<endl; for(int i=1;i<n;i++) if(a[i]!=a[i-1]) cout<<a[i]<<endl; } return 0; }
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int N; while (cin >> N) { vector<int> array; int num; for (int i = 0; i < N; ++i) { cin >> num; array.push_back(num); } sort(array.begin(), array.end()); vector<int>::iterator duplicated = unique(array.begin(), array.end()); array.erase(duplicated, array.end()); for (auto it : array) { cout << it << endl; } } return 0; }
#include <iostream> #include <set> using namespace std; int main() { int N,num; set<int> myset; while (cin >> N) { for (int i = 0;i < N;i++) { cin >> num; myset.insert(num); } for (auto it = myset.begin();it != myset.end();++it) { cout << (*it) << endl; } myset.clear(); } return 0; }
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int num; while (cin >> num) { vector<int> arr; while (num--) { int temp; cin >> temp; arr.push_back(temp); } sort(arr.begin(), arr.end());//排序 arr.erase(unique(arr.begin(), arr.end()), arr.end());//删除重复元素 for (int i : arr) { cout << i << endl; } } return 0;用到了<algorithm>里的sort和unique,即先排序,再用erase+unique删除相邻的重复元素,最后输出。最坑的是输入格式,卡了好久...
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,num[1001];
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++)scanf("%d",&num[i]);
sort(num+1,num+1+n);
unique(num+1,num+1+n);
for(int i=1;i<=n;i++)
{
if(num[i]<=num[i-1])break;
printf("%d\n",num[i]);
}
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
int j = 0, k = 0;
int *ran = new int[n];
for (int i = 0; i < n; i++) cin >> ran[i];
sort(ran, ran + n);
while (++j < n)
{
if (ran[k] != ran[j]) ran[++k] = ran[j];
}
for (j = 0; j <= k; j++) cout << ran[j] << endl;
}
return 0;
}
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <set> using namespace std; void Random() { set<int> s; int p; int n; while(cin>>n) { while(n--) { cin>>p; s.insert(p); } for(set<int>::iterator it = s.begin();it!=s.end();it++) { cout<<*it<<endl; } s.clear(); } } int main() { Random(); return 0; }