mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-12 02:41:42 +08:00
66 lines
2.7 KiB
HTML
66 lines
2.7 KiB
HTML
<p>给你一个由 <strong>互不相同</strong> 的正整数组成的数组 <code>nums</code>,需要根据每个数字的数位和(即每一位数字相加求和)按 <strong>升序 </strong>对数组进行排序。如果两个数字的数位和相等,则较小的数字排在前面。</p>
|
||
|
||
<p>返回将 <code>nums</code> 排列为上述排序顺序所需的 <strong>最小 </strong>交换次数。</p>
|
||
|
||
<p>一次 <strong>交换 </strong>定义为交换数组中两个不同位置的值。</p>
|
||
|
||
<p> </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> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||
<li><code>1 <= nums[i] <= 10<sup>9</sup></code></li>
|
||
<li><code>nums</code> 由 <strong>互不相同</strong> 的正整数组成。</li>
|
||
</ul>
|