您的位置:首页 > 其它

[LeetCode]624. Maximum Distance in Arrays

2017-06-18 21:00 323 查看

[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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: