输入输出说明:
输入的第一行是整数n(1 ≤ n ≤ 100),即序列中整数的个数 第二行是整数序列a1,a2,...,an(-100 ≤ ai ≤ 100)
如果序列含有第二统计数字,则输出这个整数;否则,输出NO。
测试集1;4
2 5 1 4
测试集2:5
1 3 5 4 2
测试集3:2
1 1
输出 NO
#include <iostream>
using namespace std;
int main()
{
int n,temp;
cin>>n;
int arr[n];
if(n==1) cout<<"NO";
if(n>1) {for(int i=0;i<n;i++)
{cin>>arr[i];}
for (int i=1;i<n;++i) {
bool flag=false;
for(int j=0;j<n-i;++j){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;}
if(flag==false) break;
}
}
int j;
for (j=1;j<n;j++){
if(arr[j]!=arr[0]) {cout<<arr[j];break;
}
if(j==n) cout<<"NO";
/*********end*********/
}
}
}
######我写的代码然后过不了不知道哪错了,望大佬教我,救救孩子。
int arr[n]; 你这句话有问题。不能这么赋值。使用指针创建动态内存
更改为如下代码:
int n, temp;
cin >> n;
int *arr=new int[n];
if (n == 1) cout << "NO";
if (n > 1) {
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
for (int i = 1; i < n; ++i) {
bool flag = false;
for (int j = 0; j < n - i; ++j) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
if (flag == false) break;
}
}
int j;
for (j = 1; j < n; j++) {
if (arr[j] != arr[0]) {
cout << arr[j]; break;
}
if (j == n) cout << "NO";
}
}
delete[] arr;
遍历一遍就行了,记录最小的两个不同的数,没必要排序。
#include <iostream>
#include <climits>
int main()
{
const int N = 100;
int n;
int a[N];
std::cin >> n;
for (int i = 0; i < n; i++)
std::cin >> a[i];
int min[2] = {INT_MAX, INT_MAX};
for (int i = 0; i < n; i++)
{
if (a[i] < min[0])
{
min[1] = min[0];
min[0] = a[i];
}
else if (a[i] < min[1] && a[i] != min[0])
{
min[1] = a[i];
}
}
if (min[1] == INT_MAX)
std::cout << "NO";
else
std::cout << min[1];
return 0;
}
if(j==n) cout<<"NO";
这句放在循环外面,否则判断完后j=n循环结束,不会输出NO
#include <iostream>
using namespace std;
int main()
{
int n,temp;
cin>>n;
int arr[n];
if(n==1) cout<<"NO";
if(n>1)
{
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
for (int i=1; i<n; ++i) {
bool flag=false;
for(int j=0; j<n-i; ++j)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;
}
if(flag==false) break;
}
}
int j;
for (j=1; j<n; j++)
{
if(arr[j]!=arr[0])
{
cout<<arr[j];
break;
}
}
if(j==n) cout<<"NO";
}
}