下乙個數。給定乙個正整數,找出與其二進位制表示式中1的個數相同且大小最接近的那兩個數(乙個略大,乙個略小)。
示例1:
輸入:num = 2(或者0b10)
輸出:[4, 1] 或者([0b100, 0b1])
示例2:
num的範圍在[1, 2147483647]之間;
如果找不到前乙個或者後乙個滿足條件的正數,那麼輸出 -1。
暴力解法,編寫乙個統計數字二進位制1的個數,然後從給定數字開始遍歷,判斷當前數字和給定數字1的個數是否相同,這樣便可以找到結果。
classsolution ;
int numone =countone(num);
for(int i = num+1; i <= 2147483647; ++i)
}for(int i = num-1; i >= 1; --i)
}return
res;
}private
int countone(int
num)
return
count;
}}
程式設計師面試金典 面試題 08 09 括號
括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 3,生成結果為 dfs搜尋,如果當前左括號用超了,右括號用超了,或者右括號的數量大於左括號的數量直接返回。而如果左右括號剛好用盡,代表生成乙個結果,記錄下來。然後就是遞迴,新增左括...
程式設計師面試金典 面試題 08 13 堆箱子
堆箱子。給你一堆n個箱子,箱子寬 wi 高hi 深di。箱子不能翻轉,將箱子堆起來時,下面箱子的寬度 高度和深度必須大於上面的箱子。實現一種方法,搭出最高的一堆箱子。箱堆的高度為每個箱子高度的總和。輸入使用陣列 wi,di,hi 表示每個箱子。示例1 輸入 box 1,1,1 2,2,2 3,3,3...
程式設計師面試金典 面試題 05 08 繪製直線
繪製直線。有個單色螢幕儲存在乙個一維陣列中,使得32個連續畫素可以存放在乙個 int 裡。螢幕寬度為w,且w可被32整除 即乙個 int 不會分布在兩行上 螢幕高度可由陣列長度及螢幕寬度推算得出。請實現乙個函式,繪製從點 x1,y 到點 x2,y 的水平線。給出陣列的長度 length,寬度 w 以...