アルゴリズム:ゼロギャップの長さを検索する
8039 ワード
自然数にNを入力し、Nをバイナリで表す場合、1と1の間で連続して0に入る回数をzero gapと呼ぶ.ゼロギャップ長の最大値を出力する関数を作成します.
ex)9はバイナリ1001、出力値は2です.1041は出力値5である.
ex)9はバイナリ1001、出力値は2です.1041は出力値5である.
Solution
function solution(N) {
let q = N;
let remainder;
let reverseBinary = [];
let flag = false;
let count = 0;
let candidate = [];
// Convert N to binary (reverse order)
while (q != 0) {
remainder = q % 2;
q = Math.floor(q / 2);
reverseBinary.push(remainder);
}
// Measure Zero gap length.
if (reverseBinary[0] == 1) {
for (let i = 0; i < reverseBinary.length; i++) {
if (reverseBinary[i] == 0) {
count = count + 1;
} else {
candidate.push(count);
count = 0;
}
}
} else {
for (let i = 0; i < reverseBinary.length; i++) {
if (reverseBinary[i] == 1) {
flag = true;
}
if (flag) {
if (reverseBinary[i] == 0) {
count = count + 1;
} else {
candidate.push(count);
count = 0;
}
}
}
}
// Return maximum value
return Math.max(
...candidate.map((ele) => {
return ele * 1;
})
);
}
Reference
この問題について(アルゴリズム:ゼロギャップの長さを検索する), 我々は、より多くの情報をここで見つけました https://velog.io/@budlebee/Algorithm-Zero-gap-길이-찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol