首页 > 其他分享 >优美的排列II

优美的排列II

时间:2024-01-31 23:13:31浏览次数:33  
标签:... 排列 优美 int 整数 II a3 a2

667. Beautiful Arrangement II (Medium)

给定两个整数 nk,你需要实现一个数组,这个数组包含从 1nn 个不同整数,同时满足以下条件:

① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] 中应该有且仅有 k 个不同整数;.

② 如果存在多种答案,你只需实现并返回其中任意一种.

示例 1:

输入: n = 3, k = 1
输出: [1, 2, 3]
解释: [1, 2, 3] 包含 3 个范围在 1-3 的不同整数, 并且 [1, 1] 中有且仅有 1 个不同整数 : 1

示例 2:

输入: n = 3, k = 2
输出: [1, 3, 2]
解释: [1, 3, 2] 包含 3 个范围在 1-3 的不同整数, 并且 [2, 1] 中有且仅有 2 个不同整数: 1 和 2

提示:

  1. nk 满足条件 1 <= k < n <= 104.

让前 k+1 个元素构建出 k 个不相同的差值,序列为:1 k+1 2 k 3 k-1 ... k/2 k/2+1.

public int[] constructArray(int n, int k) {
    int[] ret = new int[n];
    ret[0] = 1;
    for (int i = 1, interval = k; i <= k; i++, interval--) {
        ret[i] = i % 2 == 1 ? ret[i - 1] + interval : ret[i - 1] - interval;
    }
    for (int i = k + 1; i < n; i++) {
        ret[i] = i + 1;
    }
    return ret;
}

参考:

标签:...,排列,优美,int,整数,II,a3,a2
From: https://www.cnblogs.com/i9code/p/18000320

相关文章

  • IIC
    半双工,意味着要使用开漏输出高位先行,比如AT24C128/256是16位地址,发送从机地址的时候要一个字节一个字节的发,这个时候因为是高位先行,因此先发高位地址起始时序(SCL高电平期间SDA产生下降沿):先置SDA为高电平,然后置SCL为高电平,然后拉低SDA,然后在拉低SCL终止时序(SCL高电平期间SDA......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • LIID
    论文地址:https://www.researchgate.net/profile/Yu-Huan-Wu-2/publication/344231723_Leveraging_Instance-_Image-_and_Dataset-Level_Information_for_Weakly_Supervised_Instance_Segmentation/links/5f649783299bf1b53ede0180/Leveraging-Instance-Image-and-Dataset-Level-I......
  • 洛谷题单指南-暴力枚举-P1706 全排列问题
    原题链接:https://www.luogu.com.cn/problem/P1706题意解读:n个数全排列问题,本质上,给定n个空位,枚举每个能填入空位的数,依次填入,每个数只能填一次。解题思路:如何填入n个数呢,可以借助于递归,流程如下:dfs(填入第k个数){如果已经填满n个数输出结果返回......
  • 解决IIS应用程序池回收假死的方法
    Aworkerprocesswithprocessidof'4472'servingapplicationpool'MPOS'wasshutdownduetoinactivity. ApplicationPooltimeoutconfigurationwassetto20minutes. Anewworkerprocesswillbestartedwhenneeded.为应用程序池“MPOS”提供......
  • 代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四
    454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i,j,k,l) 能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]==0题目链接:454.四数相加II-力扣(LeetCode)思路:当遇到需要确认元素是......
  • 31. 下一个排列(中)
    目录题目题解:找规律题目例如,arr=[1,2,3],以下这些都可以视作arr的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。整数数组的下一个排列是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的下一个排列就是......
  • uniapp ArrayBuffer转16进度字符串 以及 十六进制转ASCII码
    1.ArrayBuffer转16进度字符串//ArrayBuffer转16进度字符串示例//ab2hex(buffer){//consthexArr=Array.prototype.map.call(//newUint8Array(buffer),//function(bit){//......
  • 杨老师的照相排列
    蓝书上的那个补全数组思想其实是当然这个问题完全可以拓展到状态压缩中间那一串是乘法的意思(然而我也不太清楚跟状态压缩有啥关系)状态压缩具体内容见状态压缩的专题......
  • 部署在IIS上的网站如何调试
    原文链接:https://www.pianshen.com/article/1494487602/IIS中的网站调试调试最常见的一般就是将项目设为项,设为起始页,然后F5。稍微复杂点的就是附加到进程等。其实很简单,首先还是和原来一样,加上断点。但不要按F5了。选择工具菜单(调试菜单也可以),附加到进程。然后会惊现一个......