2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0...n-1]范围上。 返回让这个无序数组变成有序数组的最小交换次数。 来自小红书。

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0...n-1]范围上。 返回让这个无序数组变成有序数组的最小交换次数。 来自小红书。相关的知识,希望对你有一定的参考价值。

2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0…n-1]范围上。
返回让这个无序数组变成有序数组的最小交换次数。
来自小红书。

答案2022-01-04:

下标循环怼。
时间复杂度:大于O(N)。待定。
空间复杂度:O(1)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() 
    arr := []int4, 3, 2, 1, 0
    ret := minSwap2(arr)
    fmt.Println(ret)


func minSwap2(arr []int) int 
    ans := 0
    for i := 0; i < len(arr); i++ 
        for i != arr[i] 
            arr[i], arr[arr[i]] = arr[arr[i]], arr[i]
            ans++
        
    
    return ans

执行结果如下:


左神java代码

以上是关于2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0...n-1]范围上。 返回让这个无序数组变成有序数组的最小交换次数。 来自小红书。的主要内容,如果未能解决你的问题,请参考以下文章

未排序数组中累加和为给定值的最长子数组长度

未排序数组中累加和小于或等于给定值的最长子数组长度

一个无序数组,任意两个数相加等于一个给定的数,并且用复杂度最小的方法得出

一个无序数组用啥排序方法排序是最快的

如何查找无序数组中的Top n

2022-07-27:小红拿到了一个长度为N的数组arr,她准备只进行一次修改, 可以将数组中任意一个数arr[i],修改为不大于P的正数(修改后的数必须和原数不同), 并使得所有数之和为X的倍数。