[LeetCode]624. Maximum Distance in Arrays

来源:互联网 发布:淘宝大学开网店步骤 编辑:程序博客网 时间:2024/05/22 10:34

[LeetCode]624. Maximum Distance in Arrays

题目描述

这里写图片描述

思路

保存当前最大最小和第二大第二小的值
如果最大最小值在同一个数组里就返回max(最大 - 第二小, 第二大 - 最小)

更新当前最大最小和第二大第二小的过程

  • 当更新最大最小值时,先将目前最大最小值保存到第二大第二小, 再更新
  • 当无法更新最大最小值时,检查第二大第二小能否符合更新条件,更新条件除去更大更小之外也包括不能与当前最大最小相同
  • 以上更新均更新下标,即第几个数组中获取到的最大最小值

代码

#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution {public:    int maxDistance(vector<vector<int>>& arrays) {        int curMin = 0, nextMin = 1, curMax = 0, nextMax = 1;        for (int i = 0; i < arrays.size(); ++i) {            if (arrays[i].front() < arrays[curMin].front()) {                nextMin = curMin;                curMin = i;            }            else if (arrays[i].front() <= arrays[nextMin].front() && i != curMin) {                nextMin = i;            }            if (arrays[i].back() > arrays[curMax].back()) {                nextMax = curMax;                curMax = i;            }            else if (arrays[i].back() >= arrays[nextMax].back() && i != curMax) {                nextMax = i;            }        }        return curMin == curMax ? max(abs(arrays[nextMax].back() - arrays[curMin].front()), abs(arrays[curMax].back() - arrays[nextMin].front())) : abs(arrays[curMax].back() - arrays[curMin].front());    }};int main() {    vector<vector<int>> arrays = { {-1, 1},{-3, 4}, {-2, 2} };    Solution s;    cout << s.maxDistance(arrays) << endl;    system("pause");    return 0;}
原创粉丝点击