2023/4/12 微众银行笔试


第一题:

image-20230412211139118

image-20230412211315751

class Solution {
    public int countNumbers(int L, int R, int X, int Y) {
        int count = 0;
        
        // 遍历所有可能的数字,注意边界条件,因为Y是上限,所以遍历到Y+1
        for (int i = 0; i <= Y; i++) {
            // 检查数字i是否满足条件3和条件4
            if ((i & X) == X && (i | Y) == Y) {
                // 计算数字i的二进制表示中1的个数
                int numOfOnes = Integer.bitCount(i);
                // 检查数字i是否满足条件1和条件2
                if (numOfOnes >= L && numOfOnes <= R) {
                    count++;
                }
            }
        }

        return count;
    }
}

第二题:

image-20230412211440879

image-20230412211605874

动态规划,dp【i】表示以i结尾的最小子串和,min【i】表示左边的最小连续子串和,右边再来一个dp和min走一遍
然后遍历,将这两个加起来取最小就行

第三题:

image-20230412211657126

image-20230412211927866

image-20230412212002351

贪心,将数组排个序,依次从小开始取,但是只过了45%,不知道为啥。

  目录