【Leetcode】Missing Number

来源:互联网 发布:ie8 数组 indexof 编辑:程序博客网 时间:2024/06/05 17:12

题目链接:https://leetcode.com/problems/missing-number/

题目:

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

思路:

1、数组是0~n,所以可以利用数组和

2、用异或操作,让nums数组和0~n异或,重复的元素异或结果为0,最后结果就是miss number


算法1:

public int missingNumber(int[] nums) {int sum = 0;for (int i : nums) {sum += i;}int result = nums.length * (nums.length + 1) / 2;if (result == sum) {return 0;} else {return result - sum;}}


算法2:

public int missingNumber(int[] nums) {int result = 0;for(int i=0;i<nums.length;i++){result ^= nums[i]^i;}result ^=nums.length;return result;}


0 0
原创粉丝点击