Class Solution
java.lang.Object
g2001_2100.s2025_maximum_number_of_ways_to_partition_an_array.Solution
2025 - Maximum Number of Ways to Partition an Array.<p>Hard</p>
<p>You are given a <strong>0-indexed</strong> integer array <code>nums</code> of length <code>n</code>. The number of ways to <strong>partition</strong> <code>nums</code> is the number of <code>pivot</code> indices that satisfy both conditions:</p>
<ul>
<li><code>1 <= pivot < n</code></li>
<li><code>nums[0] + nums[1] + ... + nums[pivot - 1] == nums[pivot] + nums[pivot + 1] + ... + nums[n - 1]</code></li>
</ul>
<p>You are also given an integer <code>k</code>. You can choose to change the value of <strong>one</strong> element of <code>nums</code> to <code>k</code>, or to leave the array <strong>unchanged</strong>.</p>
<p>Return <em>the <strong>maximum</strong> possible number of ways to <strong>partition</strong></em> <code>nums</code> <em>to satisfy both conditions after changing <strong>at most</strong> one element</em>.</p>
<p><strong>Example 1:</strong></p>
<p><strong>Input:</strong> nums = [2,-1,2], k = 3</p>
<p><strong>Output:</strong> 1</p>
<p><strong>Explanation:</strong> One optimal approach is to change nums[0] to k. The array becomes [<strong>3</strong> ,-1,2].</p>
<p>There is one way to partition the array:</p>
<ul>
<li>For pivot = 2, we have the partition [3,-1 | 2]: 3 + -1 == 2.</li>
</ul>
<p><strong>Example 2:</strong></p>
<p><strong>Input:</strong> nums = [0,0,0], k = 1</p>
<p><strong>Output:</strong> 2</p>
<p><strong>Explanation:</strong> The optimal approach is to leave the array unchanged.</p>
<p>There are two ways to partition the array:</p>
<ul>
<li>
<p>For pivot = 1, we have the partition [0 | 0,0]: 0 == 0 + 0.</p>
</li>
<li>
<p>For pivot = 2, we have the partition [0,0 | 0]: 0 + 0 == 0.</p>
</li>
</ul>
<p><strong>Example 3:</strong></p>
<p><strong>Input:</strong> nums = [22,4,-25,-20,-15,15,-16,7,19,-10,0,-13,-14], k = -33</p>
<p><strong>Output:</strong> 4</p>
<p><strong>Explanation:</strong> One optimal approach is to change nums[2] to k. The array becomes [22,4, <strong>-33</strong> ,-20,-15,15,-16,7,19,-10,0,-13,-14].</p>
<p>There are four ways to partition the array.</p>
<p><strong>Constraints:</strong></p>
<ul>
<li><code>n == nums.length</code></li>
<li><code>2 <= n <= 10<sup>5</sup></code></li>
<li><code>-10<sup>5</sup> <= k, nums[i] <= 10<sup>5</sup></code></li>
</ul>
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
waysToPartition
public int waysToPartition(int[] nums, int k)
-