667 優美的排列 II

2021-10-12 05:50:12 字數 935 閱讀 5610

題目描述:

給定兩個整數 n 和 k,你需要實現乙個陣列,這個陣列包含從 1 到 n 的 n 個不同整數,同時滿足以下條件:

① 如果這個陣列是 [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

n 和 k 滿足條件 1 <= k < n <= 104.

方法1:

(1)對於n,最多有 n-1 個不同的整數,同樣,對於k個不同的整數,最少使用 k+1 個數來生成,故可以先使用 k+1 個數生成 k 個不同的整數,剩餘的接著按對應的索引加一儲存即可;

(2)使用 k+1 個數生成 k 個不同的整數,方法是有數字從1逐漸增大放,奇數字從 k+1 逐漸減小放,若 1,k+1,2,k,3,k-1……直到放夠k+1個數即可;

(3)剩餘的數,直接存放對應的索引加1即可

class

solution

else

}while

(posreturn nums;}}

;

leetcode 667優美的排列II (C語言

優美的排列 ii 給定兩個整數 n 和 k,你需要實現乙個陣列,這個陣列包含從 1 到 n 的 n 個不同整數,同時滿足以下條件 如果這個陣列是 a1,a2,a3,an 那麼陣列 a1 a2 a2 a3 a3 a4 an 1 an 中應該有且僅有 k 個不同整數 如果存在多種答案,你只需實現並返回其...

LeetCode 陣列 優美的排列 II

給定兩個整數n和k,你需要實現乙個陣列,這個陣列包含從1到n的n個不同整數,同時滿足以下條件 如果這個陣列是 a1,a2,a3,an 那麼陣列 a1 a2 a2 a3 a3 a4 an 1 an 中應該有且僅有 k 個不同整數 如果存在多種答案,你只需實現並返回其中任意一種.示例 1 輸入 n 3,...

526 優美的排列

題目描述 假設有從 1 到 n 的 n 個整數,如果從這 n 個數字中成功構造出乙個陣列,使得陣列的第 i 位 1 i n 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件 第 i 位的數字能被 i 整除 i 能被第 i 位上的數字整除 現在給定乙個整數 n,請問可以構造多少個優美的...