試圖解決Counting Bits using JavaScript,基本上 finding the number of set bits for all numbers from 0 to N and push them in an array and return as answer
這是解釋
Input: n = 5
Output: [0,1,1,2,1,2]
Explanation:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
這是Javascript中的解決方案
const countBits = function (nums){
let mem = [];
mem[0] = 0;
for (let i=0;i<=nums;i )
mem[i] = mem[i/2] i%2;
return mem;
}
我看到輸出為
PS C:\VSB-PRO> node Fibo.js
[ 0, NaN, NaN, NaN, NaN ]
這是嘗試轉換的參考代碼,以前是用 Java 撰寫的
class Solution {
public:
vector<int> countBits(int num) {
//mem[i] = No of 1s from 0 to number i
vector<int> mem(num 1);
mem[0] = 0;
for(int i=1;i<=num; i)
mem[i] = mem[i/2] i%2;
return mem;
}
};
非常感激您的幫忙
問候,
卡羅琳
uj5u.com熱心網友回復:
問題是在 Java 中,/當運算元是整數時表示整數除法,但在 JavaScript 中,除法將是浮點除法,因此 1/2 == 0.5,然后mem[0.5]將是未定義的值。
使用位移運算子來獲得相同的行為:
const countBits = function(nums) {
let mem = [0];
for (let i = 0; i <= nums; i )
mem[i] = mem[i >> 1] i % 2;
return mem;
}
console.log(countBits(5));
uj5u.com熱心網友回復:
將正數轉換為 Javascript 字串物件對您有用
console.log(Number(256).toString(2)); // 100000000
如果您的陣列同時包含正數和負數,那么您可以再次使用“無符號右移”運算子和 toString 方法。
console.log((-256 >>> 0).toString(2)); // 11111111111111111111111100000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402443.html
標籤:
