1718 構建字典序最大的可行序列

2021-10-19 05:23:38 字數 1268 閱讀 3790

題目描述:

給你乙個整數 n ,請你找到滿足下面條件的乙個序列:

整數 1 在序列中只出現一次。

2 到 n 之間每個整數都恰好出現兩次。

對於每個 2 到 n 之間的整數 i ,兩個 i 之間出現的距離恰好為 i 。

序列裡面兩個數 a[i] 和 a[j] 之間的 距離 ,我們定義為它們下標絕對值之差 |j - i| 。

請你返回滿足上述條件中 字典序最大 的序列。題目保證在給定限制條件下,一定存在解。

乙個序列 a 被認為比序列 b (兩者長度相同)字典序更大的條件是: a 和 b 中第乙個不一樣的數字處,a 序列的數字比 b 序列的數字大。比方說,[0,1,9,0] 比 [0,1,5,6] 字典序更大,因為第乙個不同的位置是第三個數字,且 9 比 5 大。

示例 1:

輸入:n = 3

輸出:[3,1,2,3,2]

解釋:[2,3,2,1,3] 也是乙個可行的序列,但是 [3,1,2,3,2] 是字典序最大的序列。

示例 2:

輸入:n = 5

輸出:[5,3,1,4,3,5,2,4,2]

1 <= n <= 20

方法1:

(1)回溯

class

solution

for(

int cur=n;cur>0;

--cur)

if(cur==1)

if(back_track

(res,visited,n,tmp_index)

) res[index]=-

1;visited[cur]

=false;}

else

if(index+cursize()

&&res[index+cur]==-

1)if(

back_track

(res,visited,n,tmp_index)

) res[index]=-

1;res[index+cur]=-

1;visited[cur]

=false;}

}return

false;}

vector<

int>

constructdistancedsequence

(int n)

};

字典序最大的子串行

給定字串s,s只包含小寫字母,請求出字典序最大的子串行。子串行 字典序 一行乙個字串s 1 s 100,000 字典序最大的子串行。示例1 ababba bbba 示例2abbcbccacbbcbaaba cccccbba 題解 從左往右掃一遍找到第乙個最大的字母。從後往前掃,如果前面的字母大於等於...

1754 構造字典序最大的合併字串(貪心)

1.問題描述 給你兩個字串 word1 和 word2 你需要按下述方式構造乙個新字串 merge 如果word1 或 word2 非空,選擇下面選項之一 繼續操作 如果 word1 非空,將 word1 中的第乙個字元附加到 merge 的末尾,並將其從 word1 中移除。例如,word1 ab...

njupt 字典序最大的出棧序列

題意 給出入棧序列,保證各個元素值各不相等,輸出字典序最大的出棧序列.如入棧序列 1,2,9,4,6,5 則字典序最大的出棧序列為9,6,5,4,2 1 棧的性質就是先進後出,所以對於依次入棧的兩個元素a,b,有兩種情況 1 先壓a進棧,不彈出,再壓b進棧,則最終的出棧序列a一定位於b之後。2 要想...