classSolution { public: intmissingInteger(vector<int>& nums){ int ans = 0, s = 0, n = nums.size(); set<int> hashSet; for (int num: nums){ hashSet.insert(num); } for(int i = 0; i < n; i++){ int tmp = 1, ts = nums[0]; for (int j = 1; j <= i; j++){ if(nums[j] == nums[j - 1] + 1){ tmp ++; ts += nums[j]; } elsebreak; // 如果不满足条件直接break } ans = max(ans, tmp); if(ans == tmp){ // 只有确定这次是最长前缀的时候才更新s,避免s大但是ans小的情况 s = max(s, ts); } } if(s > 50) return s; for(int i = s; i <= 51; i++){ if (hashSet.find(i) == hashSet.end()){ return i; } } return-1; } };
classSolution { publicintmissingInteger(int[] nums) { intn= nums.length; intans=0, s = 0; HashSet<Integer> set = newHashSet<>(); for (int i: nums){ set.add(i); } for (inti=0; i < n; i++){ inttmp=1, ts = nums[0]; for (intj=1; j <= i; j++){ if(nums[j] == nums[j - 1] + 1){ tmp ++; ts += nums[j]; } elsebreak; // 如果不满足条件直接break } ans = Math.max(ans, tmp); if(ans == tmp) s = Math.max(s, ts); // 只有确定这次是最长前缀的时候才更新s,避免s大但是ans小的情况 } if(s > 50) return s; for(inti= s; i <= 51; i++){ if (!set.contains(i)) return i; } return -1; } }
classSolution: defmissingInteger(self, nums: List[int]) -> int: n, ans, s = len(nums), 0, 0 hashSet = set(nums) for i inrange(n): tmp, ts = 1, nums[0] for j inrange(1, i + 1): if nums[j] == nums[j - 1] + 1: tmp += 1 ts += nums[j] else: break ans = max(ans, tmp) if ans == tmp: # 只有确定这次是最长前缀的时候才更新s,避免s大但是ans小的情况 s = max(s, ts) if s > 50: return s for i inrange(s, 52): if i notin hashSet: return i return -1
classSolution { public: intminOperations(vector<int>& nums, int k){ int s = 0; for(int i: nums){ s ^= i; } s ^= k; // 想知道s和k有几位数不一样只需要异或一次后数1的个数即可 int ans = 0; while(s){ ans += s & 1; s >>= 1; } return ans; } };
classSolution { publicintminOperations(int[] nums, int k) { ints=0; for (int i: nums){ s ^= i; } return Integer.bitCount(s ^ k); // 想知道s和k有几位数不一样只需要异或一次后数1的个数即可,bitCount方法可以直接获取 } }
classSolution: defminOperations(self, nums: List[int], k: int) -> int: s = 0 for i in nums: s ^= i return (s ^ k).bit_count()