{ "data": { "question": { "questionId": "4022", "questionFrontendId": "3762", "categoryTitle": "Algorithms", "boundTopicId": 3844920, "title": "Minimum Operations to Equalize Subarrays", "titleSlug": "minimum-operations-to-equalize-subarrays", "content": "
You are given an integer array nums and an integer k.
In one operation, you can increase or decrease any element of nums by exactly k.
You are also given a 2D integer array queries, where each queries[i] = [li, ri].
For each query, find the minimum number of operations required to make all elements in the subarray nums[li..ri] equal. If it is impossible, the answer for that query is -1.
Return an array ans, where ans[i] is the answer for the ith query.
\n
Example 1:
\n\nInput: nums = [1,4,7], k = 3, queries = [[0,1],[0,2]]
\n\nOutput: [1,2]
\n\nExplanation:
\n\nOne optimal set of operations:
\n\ni | \n\t\t\t[li, ri] | \n\t\t\tnums[li..ri] | \n\t\t\tPossibility | \n\t\t\tOperations | \n\t\t\tFinal \n\t\t\t nums[li..ri] | \n\t\t\tans[i] | \n\t\t
|---|---|---|---|---|---|---|
| 0 | \n\t\t\t[0, 1] | \n\t\t\t[1, 4] | \n\t\t\tYes | \n\t\t\tnums[0] + k = 1 + 3 = 4 = nums[1] | \n\t\t\t[4, 4] | \n\t\t\t1 | \n\t\t
| 1 | \n\t\t\t[0, 2] | \n\t\t\t[1, 4, 7] | \n\t\t\tYes | \n\t\t\tnums[0] + k = 1 + 3 = 4 = nums[1] | \n\t\t\t[4, 4, 4] | \n\t\t\t2 | \n\t\t
Thus, ans = [1, 2].
Example 2:
\n\nInput: nums = [1,2,4], k = 2, queries = [[0,2],[0,0],[1,2]]
\n\nOutput: [-1,0,1]
\n\nExplanation:
\n\nOne optimal set of operations:
\n\ni | \n\t\t\t[li, ri] | \n\t\t\tnums[li..ri] | \n\t\t\tPossibility | \n\t\t\tOperations | \n\t\t\tFinal \n\t\t\t nums[li..ri] | \n\t\t\tans[i] | \n\t\t
|---|---|---|---|---|---|---|
| 0 | \n\t\t\t[0, 2] | \n\t\t\t[1, 2, 4] | \n\t\t\tNo | \n\t\t\t- | \n\t\t\t[1, 2, 4] | \n\t\t\t-1 | \n\t\t
| 1 | \n\t\t\t[0, 0] | \n\t\t\t[1] | \n\t\t\tYes | \n\t\t\tAlready equal | \n\t\t\t[1] | \n\t\t\t0 | \n\t\t
| 2 | \n\t\t\t[1, 2] | \n\t\t\t[2, 4] | \n\t\t\tYes | \n\t\t\tnums[1] + k = 2 + 2 = 4 = nums[2] | \n\t\t\t[4, 4] | \n\t\t\t1 | \n\t\t
Thus, ans = [-1, 0, 1].
\n
Constraints:
\n\n1 <= n == nums.length <= 4 × 1041 <= nums[i] <= 1091 <= k <= 1091 <= queries.length <= 4 × 104queries[i] = [li, ri]0 <= li <= ri <= n - 1给你一个整数数组 nums 和一个整数 k。
在一次操作中,你可以恰好将 nums 中的某个元素 增加或减少 k 。
还给定一个二维整数数组 queries,其中每个 queries[i] = [li, ri]。
对于每个查询,找到将 子数组 nums[li..ri] 中的 所有 元素变为相等所需的 最小 操作次数。如果无法实现,返回 -1。
返回一个数组 ans,其中 ans[i] 是第 i 个查询的答案。
子数组 是数组中一个连续、非空 的元素序列。
\n\n\n\n
示例 1:
\n\n输入: nums = [1,4,7], k = 3, queries = [[0,1],[0,2]]
\n\n输出: [1,2]
\n\n解释:
\n\n一种最优操作方式:
\n\ni | \n\t\t\t[li, ri] | \n\t\t\tnums[li..ri] | \n\t\t\t可行性 | \n\t\t\t操作 | \n\t\t\t最终 \n\t\t\t nums[li..ri] | \n\t\t\tans[i] | \n\t\t
|---|---|---|---|---|---|---|
| 0 | \n\t\t\t[0, 1] | \n\t\t\t[1, 4] | \n\t\t\t是 | \n\t\t\tnums[0] + k = 1 + 3 = 4 = nums[1] | \n\t\t\t[4, 4] | \n\t\t\t1 | \n\t\t
| 1 | \n\t\t\t[0, 2] | \n\t\t\t[1, 4, 7] | \n\t\t\t是 | \n\t\t\tnums[0] + k = 1 + 3 = 4 = nums[1] | \n\t\t\t[4, 4, 4] | \n\t\t\t2 | \n\t\t
因此,ans = [1, 2]。
示例 2:
\n\n输入: nums = [1,2,4], k = 2, queries = [[0,2],[0,0],[1,2]]
\n\n输出: [-1,0,1]
\n\n解释:
\n\n一种最优操作方式:
\n\ni | \n\t\t\t[li, ri] | \n\t\t\tnums[li..ri] | \n\t\t\t可行性 | \n\t\t\t操作 | \n\t\t\t最终 \n\t\t\t nums[li..ri] | \n\t\t\tans[i] | \n\t\t
|---|---|---|---|---|---|---|
| 0 | \n\t\t\t[0, 2] | \n\t\t\t[1, 2, 4] | \n\t\t\t否 | \n\t\t\t- | \n\t\t\t[1, 2, 4] | \n\t\t\t-1 | \n\t\t
| 1 | \n\t\t\t[0, 0] | \n\t\t\t[1] | \n\t\t\t是 | \n\t\t\t已相等 | \n\t\t\t[1] | \n\t\t\t0 | \n\t\t
| 2 | \n\t\t\t[1, 2] | \n\t\t\t[2, 4] | \n\t\t\t是 | \n\t\t\tnums[1] + k = 2 + 2 = 4 = nums[2] | \n\t\t\t[4, 4] | \n\t\t\t1 | \n\t\t
因此,ans = [-1, 0, 1]。
\n\n
提示:
\n\n1 <= n == nums.length <= 4 × 1041 <= nums[i] <= 1091 <= k <= 1091 <= queries.length <= 4 × 104queries[i] = [li, ri]0 <= li <= ri <= n - 1k.",
"The problem is equivalent to making nums[i] / k equal for all elements in the subarray. The minimum operations to achieve this is to make them all equal to the median of these nums[i] / k values.",
"To handle many queries efficiently, pre-process the array. Group elements by their remainder mod k. For each group, we need a data structure to find the median and sum of absolute differences for any given range.",
"A Persistent Segment Tree can answer range median and range sum queries in logarithmic time, making it suitable for this problem."
],
"solution": null,
"status": null,
"sampleTestCase": "[1,4,7]\n3\n[[0,1],[0,2]]",
"metaData": "{\n \"name\": \"minOperations\",\n \"params\": [\n {\n \"name\": \"nums\",\n \"type\": \"integer[]\"\n },\n {\n \"type\": \"integer\",\n \"name\": \"k\"\n },\n {\n \"type\": \"integer[][]\",\n \"name\": \"queries\"\n }\n ],\n \"return\": {\n \"type\": \"long[]\"\n }\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"\\u7248\\u672c\\uff1a \\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 \\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1aarray<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u6ce8\\u610f Python 2.7 \\u5df2\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\" \\u7248\\u672c\\uff1a \\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 \\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n 1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n 2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n 3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n C# 13<\\/a> \\u8fd0\\u884c\\u5728 .NET 9 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\" \\u7248\\u672c\\uff1a \\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n \\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js <\\/a>\\u5e93\\u6240\\u63d0\\u4f9b\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u3002\\u5bf9\\u4e8e Binary Search Tree, Trie \\u548c Graph\\uff0c\\u56e0\\u5176\\u53d8\\u91cf\\u547d\\u540d\\u4e0e\\u4e00\\u4e9b\\u9898\\u76ee\\u51b2\\u7a81\\uff0c\\u60a8\\u9700\\u8981\\u5728\\u4f7f\\u7528\\u65f6\\u624b\\u52a8\\u5bfc\\u5165\\u5b83\\u4eec\\uff0c\\u5982\\u4e0b\\u6240\\u793a\\u3002<\\/p>\\r\\n\\r\\n \\r\\n \\u4f7f\\u7528 \\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\" \\u7248\\u672c\\uff1a \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 swift-algorithms 1.2.0<\\/a>\\uff0cswift-collections 1.1.4<\\/a> \\u548c swift-numerics 1.0.2<\\/a><\\/p>\\r\\n\\r\\n \\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\" \\u7248\\u672c\\uff1a \\u652f\\u6301 https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u548c https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods\\/v2@v2.0.0-alpha<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982array<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\" \\u7248\\u672c\\uff1a \\u7248\\u672c\\uff1a \\u7248\\u672c\\uff1a \\u652f\\u6301 crates.io \\u7684 rand<\\/a>\\u3001regex<\\/a> \\u548c itertools<\\/a><\\/p>\"],\"php\":[\"PHP\",\" With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\" TypeScript 5.7.3<\\/p>\\r\\n\\r\\n Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2024<\\/p>\\r\\n\\r\\n lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n \\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js <\\/a>\\u5e93\\u6240\\u63d0\\u4f9b\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u3002\\u5bf9\\u4e8e Binary Search Tree, Trie \\u548c Graph\\uff0c\\u56e0\\u5176\\u53d8\\u91cf\\u547d\\u540d\\u4e0e\\u4e00\\u4e9b\\u9898\\u76ee\\u51b2\\u7a81\\uff0c\\u60a8\\u9700\\u8981\\u5728\\u4f7f\\u7528\\u65f6\\u624b\\u52a8\\u5bfc\\u5165\\u5b83\\u4eec\\uff0c\\u5982\\u4e0b\\u6240\\u793a\\u3002<\\/p>\\r\\n\\r\\n \\r\\n Racket CS<\\/a> v8.15<\\/p>\\r\\n\\r\\n \\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n \\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 26\"],\"elixir\":[\"Elixir\",\"Elixir 1.17 with Erlang\\/OTP 26\"],\"dart\":[\"Dart\",\" Dart 3.2\\u3002\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 collection<\\/a> \\u5305<\\/p>\\r\\n\\r\\n \\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"],\"cangjie\":[\"Cangjie\",\" \\u7248\\u672c\\uff1a1.0.0 LTS (cjnative)<\\/p>\\r\\n\\r\\n \\u7f16\\u8bd1\\u53c2\\u6570\\uff1a \\u5feb\\u901f\\u5165\\u95e8\\u8bf7\\u67e5\\u9605\\u300c\\u4ed3\\u9889\\u7f16\\u7a0b\\u8bed\\u8a00\\u5f00\\u53d1\\u6307\\u5357\\u300d<\\/a><\\/p>\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[1,4,7]\n3\n[[0,1],[0,2]]\n[1,2,4]\n2\n[[0,2],[0,0],[1,2]]",
"__typename": "QuestionNode"
}
}
}clang 19<\\/code> \\u91c7\\u7528\\u6700\\u65b0 C++ 23 \\u6807\\u51c6\\uff0c\\u5e76\\u4f7f\\u7528 GCC 14 \\u63d0\\u4f9b\\u7684 libstdc++<\\/code>\\u3002<\\/p>\\r\\n\\r\\n-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -gline-tables-only<\\/code> \\u53c2\\u6570\\u3002AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\nOpenJDK 25<\\/code>\\u3002\\u4f7f\\u7528\\u7f16\\u8bd1\\u53c2\\u6570 --enable-preview --release 25<\\/code><\\/p>\\r\\n\\r\\nPython 2.7.18<\\/code><\\/p>\\r\\n\\r\\nGCC 14<\\/code>\\uff0c\\u91c7\\u7528 GNU11 \\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -g1<\\/code> \\u53c2\\u6570\\u3002 AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n\\r\\nstruct hash_entry {\\r\\n int id; \\/* we'll use this field as the key *\\/\\r\\n char name[10];\\r\\n UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n struct hash_entry *s;\\r\\n HASH_FIND_INT(users, &user_id, s);\\r\\n return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"Node.js 22.14.0<\\/code><\\/p>\\r\\n\\r\\n--harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f \\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n\\r\\nconst {\\r\\n BinarySearchTree, BinarySearchTreeNode, AvlTree, AvlTreeNode,\\r\\n Trie, TrieNode,\\r\\n Graph, DirectedGraph,\\r\\n} = require('datastructures-js');\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"ruby\":[\"Ruby\",\"Ruby 3.2<\\/code> \\u6267\\u884c<\\/p>\\r\\n\\r\\nSwift 6.0<\\/code><\\/p>\\r\\n\\r\\nGo 1.23<\\/code><\\/p>\\r\\n\\r\\nPython 3.11<\\/code><\\/p>\\r\\n\\r\\nScala 3.3.1<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"Kotlin 2.1.10<\\/code><\\/p>\"],\"rust\":[\"Rust\",\"rust 1.88.0<\\/code>\\uff0c\\u4f7f\\u7528 edition 2024\\u3002<\\/p>\\r\\n\\r\\nPHP 8.2<\\/code>.<\\/p>\\r\\n\\r\\n\\r\\nimport {\\r\\n BinarySearchTree, BinarySearchTreeNode, AvlTree, AvlTreeNode,\\r\\n Trie, TrieNode,\\r\\n Graph, DirectedGraph,\\r\\n} from 'datastructures-js';\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"racket\":[\"Racket\",\"-O2 --disable-reflection<\\/code><\\/p>\\r\\n\\r\\n