特殊社会(Googleインタビュー)
20153 ワード
説明する
(完全に間違っています)
function solution(arr) {
let answer;
let neg = [];
let pos = [];
for (let x of arr) {
if (x < 0) neg.push(x);
else pos.push(x);
}
neg.sort((a, b) => b - a);
pos.sort((a, b) => a - b);
answer = neg.concat(pos);
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
問題をよく読まなかったために起きた惨事...私の答えを修正(1)-無知を取り除く
function solution(arr) {
let answer;
let neg = [];
let pos = [];
for (let x of arr) {
if (x < 0) neg.push(x);
else pos.push(x);
}
answer = neg.concat(pos);
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
簡単な解決方法(このように解決しなければならないなら、問題は起こらない)
私の解答を修正します(2)-Bubble Sort ideaを参照してください
function solution(arr) {
let answer = arr;
for (let i = arr.length - 1; i >= 0; i--) {
for (let j = 0; j < i; j++) {
if (arr[j] > 0 && arr[j + 1] < 0) [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
これはこの問題の核心解のようだ.特定の条件の要素だけを前または後ろに抽出する場合はbubble sortの考え方を使えばよい.
解決策の解答1-無知な解答だけ
function solution(arr) {
let answer = [];
for (let x of arr) {
if (x < 0) answer.push(x);
}
for (let x of arr) {
if (x > 0) answer.push(x);
}
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
どうせ無知で問題を解決するにはfor 문
を2回使う必要があるのでしょうか?このような考えが生まれる解決策2-Bubble Sort
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > 0 && arr[j + 1] < 0) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
この問題をBubbleSortで解決したとは思わなかったが、少し硬くなったようだ.学習の内容
配列内で特定の要素を前または後ろに移動する場合は、Bubble Sortを考慮します.
Reference
この問題について(特殊社会(Googleインタビュー)), 我々は、より多くの情報をここで見つけました https://velog.io/@frenchkebab/Special-Sort-구글-인터뷰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol