#include <leetcode.h>
◆ minimumDifference()
long long leetcode::minimum_difference_in_sums_after_removal_of_elements::Solution::minimumDifference |
( |
vector< int > & |
nums | ) |
|
|
static |
在文件 leetcode.cpp 第 2327 行定义.
2328 const int n = nums.size() / 3;
2329 auto *left_sum =
new long long[n];
2330 auto *right_sum =
new long long[n];
2331 long long left_min = 0;
2332 long long right_max = 0;
2333 auto left_n = priority_queue<int>();
2334 auto right_n = priority_queue<int, vector<int>, greater<>>();
2335 for(
int i = 0; i < n; i++) {
2336 left_n.push(nums[i]);
2337 left_min += nums[i];
2339 for(
int i = 3 * n - 1; i >= 2 * n; i--) {
2340 right_n.push(nums[i]);
2341 right_max += nums[i];
2343 const long long left_min_preserve = left_min;
2344 const long long right_max_preserve = right_max;
2345 left_sum[0] = left_min;
2346 right_sum[n - 1] = right_max;
2347 for(
int i = n; i < 2 * n; i++) {
2348 if(nums[i] < left_n.top()) {
2349 left_min += nums[i] - left_n.top();
2351 left_n.push(nums[i]);
2353 left_sum[i - n] = left_min;
2355 for(
int i = 2 * n - 1; i >= n; i--) {
2356 if(nums[i] > right_n.top()) {
2357 right_max += nums[i] - right_n.top();
2359 right_n.push(nums[i]);
2361 right_sum[i - n] = right_max;
2363 long long ans = left_min_preserve - right_sum[0];
2364 for(
int i = 0; i < n - 1; i++) {
2365 ans = min(ans, left_sum[i] - right_sum[i + 1]);
2367 ans = min(ans, left_sum[n - 1] - right_max_preserve);
被这些函数引用 leetcode::minimum_difference_in_sums_after_removal_of_elements::TEST().
该类的文档由以下文件生成: