c# Leetcode 268. 缺失数字 (三种方法)

这是我击败百分之0.00%的做法: 

public class Solution {
    public int MissingNumber(int[] nums) {
        int res = -1;
			Array.Sort(nums);
			//nums.Length 其实等于nums.Length-1 +1
			int len = nums.Length;
			for (int i = 0; i < len; i++)
			{
				if (!nums.Contains(i))
				{
					 res= nums[i]-1;
					 break;
				}
			}
			if (res==-1)
			{
				res = len;
			}
			return res;
    }
}

 所以必须想一个其他方法来提高效率

将包含关系去掉提高效率:

执行用时: 204 ms, 在Missing Number的C#提交中击败了57.45% 的用户

public class Solution {
    public int MissingNumber(int[] nums) {
        int res = -1;
			Array.Sort(nums); 
			int len = nums.Length;
			for (int i = 0; i < len; i++)
			{
				//if (!nums.Contains(i))
				//{
				//	 res= nums[i]-1;
				//	 break;
				//}
				if (nums[i]!=i)
				{
					res = nums[i] - 1;
					break;
				}
			}
			if (res==-1)
			{
				res = len;
			}
			return res;
    }
}

完成不是目的:学习才是

看一下求和的代码:执行用时: 172 ms, 在Missing Number的C#提交中击败了85.11% 的用户

sum1 相加  sum2 多加一个即可。然后相减。完美

public class Solution {
    public int MissingNumber(int[] nums) {
        int sum1 = 0;
			int sum2 = 0;
			for (int i = 0; i < nums.Length; i++)
			{
				sum1 += nums[i];
			}
			for (int i = 0; i < nums.Length+1; i++)
			{
				sum2 += i;
			}
			return sum2 - sum1;
    }
}

猜你喜欢

转载自blog.csdn.net/us2019/article/details/86536393
今日推荐