不排序,找出数组中的第二大数。
#include <iostream> #include <vector> using namespace std; class Solution{ public: int getSecond(vector<int> arr) { int size = arr.size(); if (size < 2) { return -INT32_MAX; } int max = arr[0]; int second = -INT32_MAX; for (int i = 1; i < size; i++) { if (arr[i] > max) { second = max; max = arr[i]; } else if (arr[i] < max && arr[i] > second) { second = arr[i]; } } return second; } }; int main(){ vector<int> arr{ 2, 1, 5, 4, 6, 3, 7 }; //vector<int> arr{ 2, 1}; //vector<int> arr{ 2 }; Solution s; cout << s.getSecond(arr) << endl; return 0; }
遍历时,主要考虑两种情况(1)arr[i]大于max, 就更新second为max,max值更新为arr[i]
(2)arr[i]小于max,但是大于second, 此时更新second即可
如何找出数组中第二大数(C++版)
最新推荐文章于 2024-08-12 16:55:46 发布