首页 > 其他分享 >树上交换节点(OPPO23届秋招-后端真题)

树上交换节点(OPPO23届秋招-后端真题)

时间:2024-04-11 20:57:07浏览次数:20  
标签:OPPO23 届秋招 int 真题 交换 static final

题面

核心思想

这道题跟树没有任何关系。。。

样例的 2 1 4 3 直接在数组交换为 1 2 3 4 就可以了。
那么只要当前下标i 与 nums[i] 不相等我们就交换
比如

5 1 2 3 4
1 != 5 交换为 -> 4 1 2 3 5
1 != 4 交换为 -> 3 1 2 4 5
1 != 3 交换为 -> 2 1 3 4 5
1 != 2 交换为 -> 1 2 3 4 5

第3题也很简单懒得写了。

代码

import java.util.*;

public class Main {
    static final int MAXN = (int) (1e4 + 10);

    public static void main(String[] args) {
        final long MOD = (long) (1e9 + 7);

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] nums = new int[n + 1];
        int cnt = 0;
        for(int i = 1; i <= n; i++){
            nums[i] = in.nextInt();
        }
        for(int i = 1;i <= n; i++){
            while(nums[i] != i){
                int tmp = nums[nums[i]];
                nums[nums[i]] = nums[i];
                nums[i] = tmp;
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}

标签:OPPO23,届秋招,int,真题,交换,static,final
From: https://www.cnblogs.com/ganyq/p/18130004

相关文章