这是我击败百分之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;
}
}