Given an array containingndistinct numbers taken from0, 1, 2, ..., n
, find the one that is missing from the array.
For example,Givennums=[0, 1, 3]
return2
.
Note:Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
這道題的話其實為了簡單一點是需要用到一些數學知識的。我們已知的是這里面只有一個missing的數。
如果給你一個連續的整數列,計算總的sum的公式=[總個數*(總個數+1)]/2。
那么簡化一點,先計算出應該有的sum然后減去現在的sum,得到的差就應該是那個我們miss的數了。
注意一點,我們的數列是從0開始,但是計算本應的sum的時候依然應該是[nums.length*(nums.length+1)]/2來計算,因為我們要加上一位作為被miss的數的位置。所以結果就是總個數還是nums.length不變。
代碼如下。~
public class Solution { public int missingNumber(int[] nums) { int sum=0; for(int i=0;i<nums.length;i++){ sum=sum+nums[i]; } return (nums.length*(nums.length+1))/2-sum; }}
新聞熱點
疑難解答