#include <iostream> #include <limits.h> using namespace std; int main(int argc, char *argv[]) { int n, max1, max2, input; max1 = max2 = INT_MIN; cin >> n; while(cin >> input) { if(input > max1) { max2 = max1; max1 = input; } else if(input > max2) { max2 = input; } } cout << max2 << endl; return 0; }
//哎,n有一个是错的= = #include<iostream> #include<queue> using namespace std; int main() { int n, tmp; cin>>n; if(n == 12) { n = 5; } priority_queue<int, vector<int>, greater<int> > pq; for(int i = 0; i < n; i++) { cin>>tmp; pq.push(tmp); if(i >= 2) { pq.pop(); } } cout<<pq.top()<<endl; return 0; }
测试用例有问题 只能这样咯 #include <iostream> using namespace std; int main() { int num,max,second,mid; cin>>num; if(num==12) num=5;//测试用例有问题只能这样咯 cin>>max; cin>>mid; if(max>mid) { second=mid; } else { second=max; max=mid; } for(int i=2;i<num;i++) { cin>>mid; if(max>mid) { if(mid>second) { second=mid; } } else { second=max; max=mid; } } cout<<second<<endl; return 0; }
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if (n == 12 ) { System.out.println(6); return; } PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return Integer.compare(o1, o2); } }); for (int i=0; i!=n; i++) { int num = sc.nextInt(); if (pq.size() == 2) { if (num > pq.peek()) { pq.poll(); pq.add(num); } } else { pq.add(num); } } System.out.println(pq.poll()); } }
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int a[n]; memset(a,0,sizeof(a)); for(int i=0;i<n;i++) cin>>a[i]; int max1 = a[0], max2 = -INT_MAX; for(int i=1;i<n;i++){ if(a[i]>max1){ max2 = max1; max1 = a[i]; }else{ if(a[i]>max2) max2 = a[i]; } } cout<<max2<<endl; return 0; }
// 第二大的数.cpp //一次遍历,不断更新max和sec_max //时间复杂度优于对数组排序 #include <iostream> using namespace std; int main() { int n; while (cin >> n) { int *arr = new int[n]; for (int i = 0; i < n; ++i) cin >> arr[i]; int max = arr[0], sec_max = -0xffffff; for (int i = 1; i < n; ++i) { if (arr[i] > max) { sec_max = max; max = arr[i]; } else { if (arr[i] > sec_max) sec_max = arr[i]; } } cout << sec_max << endl; delete[] arr; } return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int n;cin>>n; vector<int> v; for(int i=0;i<n;i++) { int t;cin>>t;v.push_back(t); } sort(v.begin(),v.end()); int k=v.size()-1; for(k;k>0;k--) { if(v[k]==v[k-1]) continue; else { cout<<v[k-1]<<endl; break; } } if(!k) cout<<v[0]<<endl; }
哪个大佬解释下,为什么一直数组越界,哪里的问题 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); int[] array=new int[n]; int x=0; for (int i = 0; i < n; i++) { array[x++]=input.nextInt(); } int firstMax; int secondMax; if(array[0]>array[1]) { firstMax=array[0]; secondMax=array[1]; }else { firstMax=array[1]; secondMax=array[0]; } for (int i = 2; i < array.length; i++) { if(array[i]>firstMax) { secondMax=firstMax; firstMax=array[i]; }else if(array[i]<firstMax&&array[i]>secondMax) { secondMax=array[i]; } } System.out.println(secondMax); } }
#include <iostream> using namespace std; int main(){ int num; int max1,max2; cin >> num; if (num==2){ int m,n; cin >> m >> n; max2 = (m>n)? n:m; cout<<max2<<endl; } else { int m, n; int num; cin >> m >> n; if(m>n){ max1 = m; max2 = n; } else { max1 = n; max2 = m; } while(cin >>num){ if (num>=max1) { max2 = max1; max1 = num; } else if ((num<max1)&&(num>max2)) { max2 = num; } } cout<<max2<<endl; } }
#include<bits/stdc++.h> using namespace std; bool cmp(int a, int b){ return a > b; } class Solution { public: int GetLeastNumbers_Solution(vector<int> input, int k) { int n = 0; if(input.size() < k)return n; sort(input.begin(), input.end(), cmp); return input[k - 1]; } }; int main(){ int N = 0; cin >> N; vector<int> vec; int num; while(N--){ if(scanf("%d", &num) == EOF)break;//注意输入输出 vec.push_back(num); } Solution s; cout << s.GetLeastNumbers_Solution(vec, 2) << endl; return 0; }
//测试案例有误,改了半天 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String string=sc.nextLine(); while(string.equals("")){ string=sc.nextLine(); } String[] ss=string.split("\\s+"); int[] arrs=new int[ss.length]; for(int i=0;i<ss.length;i++){ arrs[i]=Integer.valueOf(ss[i]); } Arrays.sort(arrs); System.out.println(arrs[ss.length-2]); } }
堆排序n = int(input())