Maximum Distance Between a Pair of Values
给两个递减数组, 找到最远的逆序对儿.
这题因为是排序好的, 用二叉搜索找, 注意先翻转一下, 然后再用lower_bound. 而且还要减去当前i的不被考虑的情况.
class Solution {
public:
int maxDistance(vector<int>& nums1, vector<int>& nums2) {
int res = 0;
int n = nums1.size();
int m = nums2.size();
reverse(nums2.begin(), nums2.end());
for(int i = 0; i < n; i++) {
int f = lower_bound(nums2.begin(), nums2.end() - i, nums1[i]) - (nums2.begin());//[0, length - i]
f = m - f - 1;
res = max(res, f - i);
}
return res;
}
};
class Solution {
public:
string sortSentence(string s) {
stringstream ss(s);
string w;
int n = 0;
unordered_map<int, string> map;
while(ss >> w){
map[w.back() - '0'] = w.substr(0, w.length() - 1);
n++;
}
stringstream so;
for(int i = 1; i <= n; i++){
so << map[i] << ' ';
}
string res = so.str();
return res.substr(0, res.length() - 1);
}
};