問題:
“有些人在公園里站成一排。他們之間有不能移動的樹。你的任務是在不移動樹木的情況下按照人的高度按高度重新排列。人可以很高!”
例子
為了
a = [-1, 150, 190, 170, -1, -1, 160, 180],
輸出應該是
solution(a) = [-1, 150, 160, 170, -1, -1, 180, 190].
我們基本上需要掃描這個串列,看看哪里有下降(除非是 -1),然后找到一種方法來重新排序非 -1 元素,以使串列不升序。我基本上不知道從哪里開始討論這個問題。有人會在base R中嘗試一下并通過您的想法告訴我嗎?
uj5u.com熱心網友回復:
a = c(-1, 150, 190, 170, -1, -1, 160, 180)
a[a>0] = sort(a[a>0])
a
[1] -1 150 160 170 -1 -1 180 190
解釋:
a>0是獲取非樹值的布爾掩碼:
假 真 真 真 假 假 真 真
如果你應用它,a你會得到:
#a[a>0]
150 160 170 180 190
因此,您可以 sort(a[a>0])使用與布爾掩碼相同的方法對值進行排序并設定回原始向量。
a[a>0] = sort(a[a>0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454061.html
