首先输入一个正整数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;
}