{ "data": { "question": { "questionId": "4015", "questionFrontendId": "3698", "categoryTitle": "Algorithms", "boundTopicId": 3793312, "title": "Split Array With Minimum Difference", "titleSlug": "split-array-with-minimum-difference", "content": "
You are given an integer array nums
.
Split the array into exactly two subarrays, left
and right
, such that left
is strictly increasing and right
is strictly decreasing.
Return the minimum possible absolute difference between the sums of left
and right
. If no valid split exists, return -1
.
A subarray is a contiguous non-empty sequence of elements within an array.
\n\nAn array is said to be strictly increasing if each element is strictly greater than its previous one (if exists).
\n\nAn array is said to be strictly decreasing if each element is strictly smaller than its previous one (if exists).
\n\n\n
Example 1:
\n\nInput: nums = [1,3,2]
\n\nOutput: 2
\n\nExplanation:
\n\ni | \n\t\t\tleft | \n\t\t\tright | \n\t\t\tValidity | \n\t\t\tleft sum | \n\t\t\tright sum | \n\t\t\tAbsolute difference | \n\t\t
---|---|---|---|---|---|---|
0 | \n\t\t\t[1] | \n\t\t\t[3, 2] | \n\t\t\tYes | \n\t\t\t1 | \n\t\t\t5 | \n\t\t\t|1 - 5| = 4 | \n\t\t
1 | \n\t\t\t[1, 3] | \n\t\t\t[2] | \n\t\t\tYes | \n\t\t\t4 | \n\t\t\t2 | \n\t\t\t|4 - 2| = 2 | \n\t\t
Thus, the minimum absolute difference is 2.
\nExample 2:
\n\nInput: nums = [1,2,4,3]
\n\nOutput: 4
\n\nExplanation:
\n\ni | \n\t\t\tleft | \n\t\t\tright | \n\t\t\tValidity | \n\t\t\tleft sum | \n\t\t\tright sum | \n\t\t\tAbsolute difference | \n\t\t
---|---|---|---|---|---|---|
0 | \n\t\t\t[1] | \n\t\t\t[2, 4, 3] | \n\t\t\tNo | \n\t\t\t1 | \n\t\t\t9 | \n\t\t\t- | \n\t\t
1 | \n\t\t\t[1, 2] | \n\t\t\t[4, 3] | \n\t\t\tYes | \n\t\t\t3 | \n\t\t\t7 | \n\t\t\t|3 - 7| = 4 | \n\t\t
2 | \n\t\t\t[1, 2, 4] | \n\t\t\t[3] | \n\t\t\tYes | \n\t\t\t7 | \n\t\t\t3 | \n\t\t\t|7 - 3| = 4 | \n\t\t
Thus, the minimum absolute difference is 4.
\nExample 3:
\n\nInput: nums = [3,1,2]
\n\nOutput: -1
\n\nExplanation:
\n\nNo valid split exists, so the answer is -1.
\n\n
Constraints:
\n\n2 <= nums.length <= 105
1 <= nums[i] <= 105
给你一个整数数组 nums
。
将数组 恰好 分成两个子数组 left
和 right
,使得 left
严格递增 ,right
严格递减 。
返回 left
与 right
的元素和之间 绝对差值的最小可能值 。如果不存在有效的分割方案,则返回 -1
。
子数组 是数组中连续的非空元素序列。
\n\n当数组中每个元素都严格大于其前一个元素(如果存在)时,称该数组为严格递增。
\n\n当数组中每个元素都严格小于其前一个元素(如果存在)时,称该数组为严格递减。
\n\n\n\n
示例 1:
\n\n输入: nums = [1,3,2]
\n\n输出: 2
\n\n解释:
\n\ni | \n\t\t\tleft | \n\t\t\tright | \n\t\t\t是否有效 | \n\t\t\tleft 和 | \n\t\t\tright 和 | \n\t\t\t绝对差值 | \n\t\t
---|---|---|---|---|---|---|
0 | \n\t\t\t[1] | \n\t\t\t[3, 2] | \n\t\t\t是 | \n\t\t\t1 | \n\t\t\t5 | \n\t\t\t|1 - 5| = 4 | \n\t\t
1 | \n\t\t\t[1, 3] | \n\t\t\t[2] | \n\t\t\t是 | \n\t\t\t4 | \n\t\t\t2 | \n\t\t\t|4 - 2| = 2 | \n\t\t
因此,最小绝对差值为 2。
\n示例 2:
\n\n输入: nums = [1,2,4,3]
\n\n输出: 4
\n\n解释:
\n\ni | \n\t\t\tleft | \n\t\t\tright | \n\t\t\t是否有效 | \n\t\t\tleft 和 | \n\t\t\tright 和 | \n\t\t\t绝对差值 | \n\t\t
---|---|---|---|---|---|---|
0 | \n\t\t\t[1] | \n\t\t\t[2, 4, 3] | \n\t\t\t否 | \n\t\t\t1 | \n\t\t\t9 | \n\t\t\t- | \n\t\t
1 | \n\t\t\t[1, 2] | \n\t\t\t[4, 3] | \n\t\t\t是 | \n\t\t\t3 | \n\t\t\t7 | \n\t\t\t|3 - 7| = 4 | \n\t\t
2 | \n\t\t\t[1, 2, 4] | \n\t\t\t[3] | \n\t\t\t是 | \n\t\t\t7 | \n\t\t\t3 | \n\t\t\t|7 - 3| = 4 | \n\t\t
因此,最小绝对差值为 4。
\n示例 3:
\n\n输入: nums = [3,1,2]
\n\n输出: -1
\n\n解释:
\n\n不存在有效的分割方案,因此答案为 -1。
\n\n\n
提示:
\n\n2 <= nums.length <= 105
1 <= nums[i] <= 105
inc[i]
that is true iff the subarray nums[0..i]
is strictly increasing.",
"Build a suffix boolean dec[i]
that is true iff the subarray nums[i..n - 1]
is strictly decreasing.",
"A split after index i
(where 0 <= i < n - 1
) is valid iff inc[i] && dec[i + 1]
.",
"Build a prefix-sum array pref
, and use it to check if a valid split exists. If no valid split exists return -1
."
],
"solution": null,
"status": null,
"sampleTestCase": "[1,3,2]",
"metaData": "{\n \"name\": \"splitArray\",\n \"params\": [\n {\n \"name\": \"nums\",\n \"type\": \"integer[]\"\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<\\/p>\"],\"ruby\":[\"Ruby\",\" \\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<\\/p>\"],\"racket\":[\"Racket\",\" 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,3,2]\n[1,2,4,3]\n[3,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\\n
OpenJDK 21<\\/code>\\u3002\\u4f7f\\u7528\\u7f16\\u8bd1\\u53c2\\u6570
--enable-preview --release 21<\\/code><\\/p>\\r\\n\\r\\n
Python 2.7.18<\\/code><\\/p>\\r\\n\\r\\n
GCC 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
Ruby 3.2<\\/code> \\u6267\\u884c<\\/p>\\r\\n\\r\\n
Swift 6.0<\\/code><\\/p>\\r\\n\\r\\n
Go 1.23<\\/code><\\/p>\\r\\n\\r\\n
Python 3.11<\\/code><\\/p>\\r\\n\\r\\n
Scala 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\\n
PHP 8.2<\\/code>.<\\/p>\\r\\n\\r\\n
-O2 --disable-reflection<\\/code><\\/p>\\r\\n\\r\\n