位运算

2021-02-26  本文已影响0人  Talk1sCheap

左移 <<
右移 >>
判断奇偶 a&1==0
除2 a>>1
使i位为1 a+=(1<<i-1)

枚举子集

本质是n位的枚举,两层循环。
外层是2^n的可能性,内层则是i对每n位的检测

public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res=new ArrayList<>();
        List<Integer> tmp=new ArrayList<>();
        int n=nums.length;
        for(int i=0;i<1<<n;i++){
            tmp.clear();
            //一个for就好了
            for(int j=0;j<n;j++){
                if(((i>>j)&1) == 1){
                    tmp.add(nums[j]);
                }
            }
            //这里是最骚的 直接tmp会变量污染
            res.add(new ArrayList<>(tmp));
        }
        return res;

    }
上一篇 下一篇

猜你喜欢

热点阅读