1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-02-04 14:40:27 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/将元素分配到两个数组中 II [distribute-elements-into-two-arrays-ii].html

62 lines
3.3 KiB
HTML
Raw Normal View History

2024-03-22 16:17:08 +08:00
<p>给你一个下标从 <strong>1</strong> 开始、长度为 <code>n</code> 的整数数组 <code>nums</code></p>
<p>现定义函数 <code>greaterCount</code> ,使得 <code>greaterCount(arr, val)</code> 返回数组 <code>arr</code><strong> 严格大于</strong> <code>val</code> 的元素数量。</p>
<p>你需要使用 <code>n</code> 次操作,将 <code>nums</code> 的所有元素分配到两个数组 <code>arr1</code><code>arr2</code> 中。在第一次操作中,将 <code>nums[1]</code> 追加到 <code>arr1</code> 。在第二次操作中,将 <code>nums[2]</code> 追加到 <code>arr2</code> 。之后,在第 <code>i</code> 次操作中:</p>
<ul>
<li>如果 <code>greaterCount(arr1, nums[i]) &gt; greaterCount(arr2, nums[i])</code> ,将 <code>nums[i]</code> 追加到 <code>arr1</code></li>
<li>如果 <code>greaterCount(arr1, nums[i]) &lt; greaterCount(arr2, nums[i])</code> ,将 <code>nums[i]</code> 追加到 <code>arr2</code></li>
<li>如果 <code>greaterCount(arr1, nums[i]) == greaterCount(arr2, nums[i])</code> ,将 <code>nums[i]</code> 追加到元素数量较少的数组中。</li>
<li>如果仍然相等,那么将 <code>nums[i]</code> 追加到 <code>arr1</code></li>
</ul>
<p>连接数组 <code>arr1</code><code>arr2</code> 形成数组 <code>result</code> 。例如,如果 <code>arr1 == [1,2,3]</code><code>arr2 == [4,5,6]</code> ,那么 <code>result = [1,2,3,4,5,6]</code></p>
<p>返回整数数组 <code>result</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [2,1,3,3]
<strong>输出:</strong>[2,3,1,3]
<strong>解释:</strong>在前两次操作后arr1 = [2] arr2 = [1] 。
在第 3 次操作中,两个数组中大于 3 的元素数量都是零,并且长度相等,因此,将 nums[3] 追加到 arr1 。
在第 4 次操作中,两个数组中大于 3 的元素数量都是零,但 arr2 的长度较小,因此,将 nums[4] 追加到 arr2 。
在 4 次操作后arr1 = [2,3] arr2 = [1,3] 。
因此,连接形成的数组 result 是 [2,3,1,3] 。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [5,14,3,1,2]
<strong>输出:</strong>[5,3,1,2,14]
<strong>解释:</strong>在前两次操作后arr1 = [5] arr2 = [14] 。
在第 3 次操作中,两个数组中大于 3 的元素数量都是一,并且长度相等,因此,将 nums[3] 追加到 arr1 。
在第 4 次操作中arr1 中大于 1 的元素数量大于 arr2 中的数量2 &gt; 1因此将 nums[4] 追加到 arr1 。
在第 5 次操作中arr1 中大于 2 的元素数量大于 arr2 中的数量2 &gt; 1因此将 nums[5] 追加到 arr1 。
在 5 次操作后arr1 = [5,3,1,2] arr2 = [14] 。
因此,连接形成的数组 result 是 [5,3,1,2,14] 。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<strong>输入:</strong>nums = [3,3,3,3]
<strong>输出:</strong>[3,3,3,3]
<strong>解释:</strong>在 4 次操作后arr1 = [3,3] arr2 = [3,3] 。
因此,连接形成的数组 result 是 [3,3,3,3] 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
</ul>