1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-12 02:41:42 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
Files
leetcode-problemset/leetcode-cn/problem (Chinese)/数位和排序需要的最小交换次数 [minimum-swaps-to-sort-by-digit-sum].html
2025-05-25 15:08:47 +08:00

66 lines
2.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个由 <strong>互不相同</strong>&nbsp;的正整数组成的数组 <code>nums</code>,需要根据每个数字的数位和(即每一位数字相加求和)按&nbsp;<strong>升序&nbsp;</strong>对数组进行排序。如果两个数字的数位和相等,则较小的数字排在前面。</p>
<p>返回将 <code>nums</code> 排列为上述排序顺序所需的&nbsp;<strong>最小&nbsp;</strong>交换次数。</p>
<p>一次&nbsp;<strong>交换&nbsp;</strong>定义为交换数组中两个不同位置的值。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [37,100]</span></p>
<p><strong>输出:</strong> <span class="example-io">1</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>计算每个整数的数位和:<code>[3 + 7 = 10, 1 + 0 + 0 = 1] → [10, 1]</code></li>
<li>根据数位和排序:<code>[100, 37]</code>。将 <code>37</code><code>100</code> 交换,得到排序后的数组。</li>
<li>因此,将 <code>nums</code> 排列为排序顺序所需的最小交换次数为 1。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [22,14,33,7]</span></p>
<p><strong>输出:</strong> <span class="example-io">0</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>计算每个整数的数位和:<code>[2 + 2 = 4, 1 + 4 = 5, 3 + 3 = 6, 7 = 7] → [4, 5, 6, 7]</code></li>
<li>根据数位和排序:<code>[22, 14, 33, 7]</code>。数组已经是排序好的。</li>
<li>因此,将 <code>nums</code> 排列为排序顺序所需的最小交换次数为 0。</li>
</ul>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [18,43,34,16]</span></p>
<p><strong>输出:</strong> <span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>计算每个整数的数位和:<code>[1 + 8 = 9, 4 + 3 = 7, 3 + 4 = 7, 1 + 6 = 7] → [9, 7, 7, 7]</code></li>
<li>根据数位和排序:<code>[16, 34, 43, 18]</code>。将 <code>18</code><code>16</code> 交换,再将 <code>43</code><code>34</code> 交换,得到排序后的数组。</li>
<li>因此,将 <code>nums</code> 排列为排序顺序所需的最小交换次数为 2。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>nums</code><strong>互不相同</strong> 的正整数组成。</li>
</ul>