Find the Missing Number

青旅半醒 2021-12-16 07:25 318阅读 0赞

方法一: 数学方法,先找到最大的值,需要比较最大的值和array size, 要是比array size小, 说明最大值missing。 然后用等差数列公式求得如果不缺失值的和,然后再减去array里数的和。

  1. class Solution {
  2. public:
  3. /**
  4. * @param nums: a vector of integers
  5. * @return: an integer
  6. */
  7. int findMissing(vector<int> &nums) {
  8. // write your code here
  9. int max = 0;
  10. int sum = 0;
  11. for (int i : nums){
  12. if(i > max) max = i;
  13. sum += i;
  14. }
  15. int calmax = max == nums.size()? max : max + 1;
  16. int calsum = calmax * (nums.size()+1) /2 ;
  17. return calsum - sum;
  18. }
  19. };

方法二:

先把不缺失的所有数取xor, 然后再对数组里的数取xor, 剩下的就是最后的结果。

  1. public class Solution {
  2. /**
  3. * @param nums: an array of integers
  4. * @return: an integer
  5. */
  6. public int findMissing(int[] nums) {
  7. // write your code here
  8. int result = 0;
  9. for (int i = 0; i <= nums.length; i++){
  10. result ^= i;
  11. }
  12. for(int i = 0; i < nums.length; i++){
  13. result ^= nums[i];
  14. }
  15. return result;
  16. }
  17. }

转载于:https://www.cnblogs.com/codingEskimo/p/5684130.html

发表评论

表情:
评论列表 (有 0 条评论,318人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Find the Missing Number

    方法一: 数学方法,先找到最大的值,需要比较最大的值和array size, 要是比array size小, 说明最大值missing。 然后用等差数列公式求得如果不缺失值的和