首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)
如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1
10 10 10 10 10 20 20 30 30 40 40
30
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; int main(){ int N; while (cin>>N){ vector<int> vec; while (N--){ int a_i; cin>>a_i; vec.push_back(a_i); } sort (vec.begin(),vec.end()); int result = vec[0]; int count = 0; vector<int> vec_1; vec_1.push_back(result); for (int i =1;i<vec.size();++i){ if ( vec[i] != result ){ // 判去重 vec_1.push_back(vec[i]); result = vec[i]; } } if (vec_1.size() < 3){ // 没有第三便宜的帽子输出 -1 cout << -1 <<endl; } else { cout << vec_1[2] <<endl; } } return 0; }
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
Scanner scanner2 = new Scanner(System.in);
String s = scanner2.nextLine();
String[] split = s.split(" ");
if (split.length > count)
System.out.println("输入数据错误");
if (Arrays.stream(split).distinct().sorted().count() < 3)
System.out.println("-1");
else
Arrays.stream(split).distinct().sorted()
.skip(2).limit(1)
.forEach(
a -> System.out.println(a)
);
import java.util.*; public class Main{ /*冒泡排序*/ public static int[] sort(int[] money){ for(int i=0; i<money.length-1; i++){ for(int j=0; j<money.length-1-i; j++){ if(money[j]>money[j+1]){ int temp = money[j]; money[j] = money[j+1]; money[j+1] = temp; } } } return money; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int count = sc.nextInt(); int[] money = new int[count]; //判断谁是第三个价格 int level = 1; for(int i=0; i<count; i++){ money[i] = sc.nextInt(); } money = sort(money); for(int i=0; i<money.length-1; i++){ if(money[i]<money[i+1]){ level++; } if(level == 3){ System.out.println(money[i+1]); break; } } if(level < 3){ System.out.println("-1"); } } }
#include <iostream>using namespace std;intmain(){inti,p,N,a[1001]={0};cin>>N;for(i=0;i<N;++i){cin>>p;++a[p];}p=0;for(i=1;i<=1000;++i){if(a[i]>0)++p;if(p==3)break;}if(p==3)cout<<i;elsecout<<-1;cout<<endl;return0;}
importjava.util.Iterator;importjava.util.Scanner;importjava.util.TreeSet;publicclassMain {publicstaticvoidmain(String[] args){Scanner in = newScanner(System.in);while(in.hasNext()){intn = Integer.valueOf(in.nextLine());int[] arr = newint[n];TreeSet<Integer> set = newTreeSet<>();for(inti = 0; i < n; i ++){arr[i] = in.nextInt();}in.nextLine();for(intj = 0; j < arr.length;j++){set.add(arr[j]);}Iterator<Integer> iterator = set.iterator();intcount = 0;if(set.size() >= 3){while(iterator.hasNext()){count++;iterator.next();if(count == 2){System.out.println(iterator.next());}}}else{System.out.println(-1);}}}}
看代码通俗易懂。 import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan= new Scanner(System.in); while(scan.hasNext()){ int num=scan.nextInt(); Set set=new TreeSet(); for(int i=0;i<num;i++){ set.add(scan.nextInt()); } Iterator it=set.iterator(); int index=-1; if(set.size()>=3){ while(it.hasNext()){ index++; if(index==2){ System.out.println(it.next()); }else{ it.next(); } } }else{ System.out.println(-1); } } } }
//瞎写写,不知道怎么输出set中的第三个值? #include <iostream> #include <set> using namespace std; int main() { int n; int i = 0,result; int price[50]; cin >> n; while(n--) cin >> price[i++]; set<int> s; for(int j =0;j<i;j++) s.insert(price[j]); if(s.size()<3) { result = -1; } else{ set<int>::iterator it; int count = 0; for(it = s.begin();it!=s.end();it++) { if(count==2) { result = *it; break; } count++; } } cout << result << endl; return 0; }
//已测试,通过所有用例!容易理解。 import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String []args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); //创建数量N,代表有N顶帽子; int num[] = new int[N]; //创建int数组,把所有帽子存进数组中; int count = 0; //用于计数; for(int i=0; i < N; i++){ num[i] = scanner.nextInt(); //为数组赋值,对应每顶帽子的价格; } Arrays.sort(num); //进行从小到大排序; for(int j=1; j < N; j++){ if(num[j-1] < num[j]){ //相邻的帽子价格进行比较; count++; } if(count == 3){ System.out.println(num[j-1]); //到达3时,输出结果; break; //退出循环; } if(count == 2 && num[N-2] <= num[N-1]){ //用于解决最大价格为第三便宜的情况; System.out.println(num[j]); //输出结果; count++; //计数加1,防止count<3,输出-1; break; } } if(count < 3){ //没有第三便宜的情况时,输出-1; System.out.println(-1); } } }
import java.util.Scanner;
import java.util.Arrays;
/**
* Created by Halley on 2017/9/2.
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
Arrays.sort(a);
int k = 1;
int sum = 1;
boolean flag = true;
while (k < n) {
if (a[k] != a[k-1]) {
sum++;
}
if (sum == 3) {
flag = false;
System.out.println(a[k]);
break;
}
k++;
}
if (flag) {
System.out.println(-1);
}
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] arr = new int[num];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int times = 0;
Arrays.sort(arr);
for (int j = 1; j < arr.length; j++) {
if (arr[j] != arr[j - 1]) {
times++;
} else {
continue;
}
if (times == 2) {
System.out.print(arr[j]);
return;
}
}
System.out.print(-1);
}
}
}
/* * 使用了偷懒的方法,使用qsort函数进行价格的排序,然后筛选第三小的价格输出就OK */ #include<stdio.h> #include<string.h> #include<stdlib.h> int compInc(const void *a, const void *b) { return *(int *)a - *(int *)b; } int main(int argc, char **argv) { int iNum;//表示帽子的数量 int iPrice[64]; //存储价格的数组 int i; int min = -1; int iFlag = 0; //表示第三小 int iResult = 0; //结果存储在iResult里面 while(scanf("%d",&iNum) != EOF) { if(iNum < 3) { iResult = -1; } for(i = 0; i < iNum;i++) { scanf("%d",&iPrice[i]); } qsort(iPrice, iNum, sizeof(iPrice[0]), compInc); for(i = 0; i < iNum; i++ ) { if(min < iPrice[i]) { min = iPrice[i]; iFlag++; if(iFlag == 3) { iResult = min; } if(iFlag < 3) iResult = -1; } } printf("%d",iResult); } return 0; }
#include<iostream> #include<algorithm> #include<set> using namespace std; int main() { int n,temp; while (cin >> n) { set<int> res; for (int i = 0; i<n; i++) { cin >> temp; res.insert(temp); } //sort(res.begin(),res.end()); if (res.size() >= 3) { set<int>::iterator it = res.begin(); cout << *(++(++it)) << endl; } else { cout << -1 << endl; } } return 0; }