2024/08/22 每日一题

XuGui / 2024-08-23 / 原文

LeetCode 3133 数组最后一个元素的最小值

方法1:位运算

class Solution {
    public long minEnd(int n, int x) {
        int idx = 0; // 用于记录 x 二进制为 0 的下标
        n--; // 第一个数就是 x
        long ans = x;
        while (n > 0) { // 取出 n 的每一位填充到 x 的 idx 处
            while ((ans & (1L << idx)) != 0) idx++;
            if ((n & 1) == 1) ans |= ((long) (n & 1) << idx);
            n >>= 1; idx++;
        }
        return ans;
    }
}