1 条题解
-
224陈泓凯 (12134陈泓凯) LV 10 @ 2024-01-06 13:53:34
一直都没写过题解,这道题对于C++压的一点也不狠,建议数据范围改成 \(5*10^6\) 。
这里时间复杂度只能给到 O(n),但一般做法还是太极限了,以下为 800ms 的代码。
#include<bits/stdc++.h> using namespace std; int n,a[10]; int main() { ios::sync_with_stdio(false);//没有这个你就报废了 cin>>n; for(int i=1;i<=n;i++) { char x; cin>>x; a[x-'0']++; } if(a[0]) { for(int i=1;i<=9;i++) if(a[i]>=1) { a[i]--; cout<<i; break; } } for(int i=0;i<=9;i++) if(a[i]>=1) { while(a[i]--) cout<<i; } return 0; }
当然时间复杂度那么高是不行的,小小改一下输出就行了,时间给到 380 ms。
#include<bits/stdc++.h> using namespace std; int n,a[10];char b[10]; int main() { ios::sync_with_stdio(false); cin>>n; for(int i=0;i<=9;i++) b[i]=i+'0'; for(int i=1;i<=n;i++) { char x; cin>>x; a[x-'0']++; } if(a[0]) { for(int i=1;i<=9;i++) if(a[i]>=1) { a[i]--; putchar(b[i]); break; } } for(int i=0;i<=9;i++) if(a[i]>=1) { while(a[i]--) putchar(b[i]); } return 0; }
当然输入也可以压时间,这边就不推荐了。
- 1
信息
- ID
- 1865
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 24
- 已通过
- 6
- 通过率
- 25%
- 被复制
- 6
- 上传者