老人看到有人在FB問這題就手癢上班偷偷來寫,
分享一下我在FB上看到吳邦一先生(我猜是老師?)給的提示 [原始連結]:
以下是更詳細的想法
我的排序策略是從矮的小朋友開始排序。對於每位小朋友移動到合法的位置有兩個選擇,往右走或是往左走。再走的時候是不需要考慮比她矮的小朋友,因為理論上比較小(矮)的小朋友都已經先排好到兩側了。所以每位小朋友需要的最小swap就是min(右走步數, 左走步數)。由於這題不需要真的排序出答案,所以是不需要真的swap小朋友就可以得到答案囉(HINT: 需要額外維護一個陣列)。