題目描述:
給你乙個整數 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 要想...