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

2021-08-26 14:55:23 字數 1410 閱讀 9658

優美的排列 ii

給定兩個整數 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=100,k=24時

[1,25,2,24,3,23,4,22,5,21,6,20,7,19,8,18,9,17,10,16,11,15,12,14,13,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]

n=100,k=25時

[1,26,2,25,3,24,4,23,5,22,6,21,7,20,8,19,9,18,10,17,11,16,12,15,13,14,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]

看出來差距了麼,第二個數是從k+1,每隔兩個開始減少的,只有前k+1個資料發生了變化。根據這個規律湊數就行了。

下面是**

int* constructarray(int n, int k, int* returnsize) 

else

}for(i=k+1;i1;

return res;

}

667 優美的排列 II

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

LeetCode526 優美的排列

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

LeetCode 陣列 優美的排列 II

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