栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode 667. Beautiful Arrangement II | 667. 优美的排列 II(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 667. Beautiful Arrangement II | 667. 优美的排列 II(Java)

题目

https://leetcode.com/problems/beautiful-arrangement-ii/

题解

偏智力题,评论区有人说,A typical question testing whether you’re “smart” rather than “taking algorithm class”.

官方 O(n) 题解没看懂(没仔细看),评论区 看到一个 O(n^2) 的解法,比较清晰。

数据量 n=10^4,O(n^2) 的解能通过,说明在力扣上指令条数 1*10^8 是可以通过的。

class Solution {
    public int[] constructArray(int n, int k) {
        // 初始化为1到n,此时差值为1种
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = i + 1;
        }
        // 然后从第二位到末位开始不停翻转,每翻转一次增加一种差值
        for (int i = 1; i < k; i++) {
            swap(arr, i, n - 1);
        }
        return arr;
    }

    public void swap(int[] arr, int L, int R) {
        for (int i = 0; i <= (R - L) / 2; i++) {
            int t = arr[L + i];
            arr[L + i] = arr[R - i];
            arr[R - i] = t;
        }
    }
}

效率很低,意料之中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343318.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号