第二题用贪心做的。完美数组就是排序正序或者逆序,考虑这两种情况。 每次把当前不在正确位置上的最小or最大的值换到正确位置上,把原位置的值swap到对应的这个位置。 即 if arr[i] = 当前未排序中的最小or最大 continue; swap(arr[i], arr[当前最小or最大的index]); 然后Math.min(正序次数,逆序次数)。