位运算性质:a&b不会大于a也不会大于b,会将二进制中的1变为0,但是0不会变为1
a|b不会小于a也不会小于b,会将二进制中的0变为1,但是1不会变为0
class Solution { public int closestToTarget(int[] arr, int target) { Set<Integer> cur = new HashSet<>(); int res = Integer.MAX_VALUE; for(int num : arr) { Set<Integer> cur1 = new HashSet<>(); res = Math.min(res,Math.abs(num-target)); cur1.add(num); for(int k : cur) { cur1.add(num & k); res = Math.min(res,Math.abs((num&k)-target)); } cur = cur1; } return res; } }