によってキュー復興だからここで質問です:406(LeetCode)。身長
https://leetcode.com/problems/queue-reconstruction-by-height/
あなたはキューに立って人々のランダムなリストを持っていると仮定します。それぞれの人は整数の組(h、k)で記述され、hは人物の高さ、kは高さh以上の人物の人数です。キューを再構築するアルゴリズムを作成します。
注: 人数は1,100人未満です。
例:
Input:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
Output:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
そして、ここには私の答えはJavaScriptを使用している:
var reconstructQueue = function(people) {
var result= [];
people.sort((a,b)=>a[1]-b[1]).sort((a,b)=>b[0]-a[0]);
for(var i=0; i<people.length; i++) {
result.splice(people[i][1], 0, people[i]);
}
return result;
};
これは、上記の試験に合格することができますが、なぜそれがLeetcodeのすべてのテストに合格しませんでしたか?誰か助けてくれますか?
私はjavascriptの専門家ではない。この式は、people.sort((a、b)=> a [1] -b [1])であるかもしれません。コンパレータ機能によって等価な要素の順序を保持する保証?それ以外の場合は、このコードを使用するとエラーが発生しやすくなります。正直言って:JavaScriptのようにはあまり標準化されていない言語のために、あなたはパラペットの上にあまりにも頭を上げています。これら2つのコンパレータを1つにマージすることをお勧めします。 – Paul
'people.sort((a、b)=> a [1] -b [1])ソート((a、b)=> b [0] -a [0]);は同じです'people.sort((a、b)=> b [0] -a [0]);'のように、あなたは単に異なる順序付け規則を使って*頼りにしています。 2番目のソートはサブリストを操作しません*。 –
@ Paul JavaScript、現在第6版であるECMA標準262で記述されているプログラミング言語は、非常に標準化されています。 「JavaScript」と「JavaScriptで使用できるブラウザAPI」を混同しないでください。それは、それが使用するいくつかのランダムなライブラリのC++を混乱させるようなものです。 –