c盤清理的步驟是什么(如何清理C盤空間)
如何清理C盤空間怎么清理C盤的垃圾文件?每天上網會給電腦帶來很多臨時文件,這些垃圾文件不清理掉時間久了就會影響到電腦的運行速度。那怎
2022/12/08
(資料圖)
題目:
下一個數。給定一個正整數,找出與其二進制表達式中1的個數相同且大小最接近的那兩個數(一個略大,一個略小)。
示例1:
輸入:num = 2(或者0b10) 輸出:[4, 1] 或者([0b100, 0b1])
示例2:
輸入:num = 1 輸出:[2, -1]
代碼實現:
class Solution { public int[] findClosedNumbers(int num) { int[] res = new int[2]; if (num <=0 || num>=Integer.MAX_VALUE) { res[0] = -1; res[1] = -1; } else { res[0] = getNext(num); res[1] = getPrev(num); } return res; } // 取得后一個較大的數 private int getNext(int n) { // 計算c0和c1,用于找到最右邊非拖尾0的下標p int c = n; int c0 = 0; int c1 = 0; while (((c&1)==0)&&(c!=0)) { c0++; c >>= 1; } while ((c&1)==1) { c1++; c >>= 1; } // 錯誤:若n=111111...000, 那么就沒有更大的數字 // 如果是n的二進制不存在可翻轉的0,或者n就是0 if (c0 + c1 == 31 || c0 +c1 ==0) { return -1; } int p = c0+c1; // 前提:最右邊,非拖尾0的位置 n |= (1<
標簽: 那兩個數