常规思想答案
不满足时间复杂度为O(n) 的答案:
public static IList<int> FindDisappearedNumbers(int[] nums)
{
List<int> res = new List<int>();
var len = nums.Length;
for (int i = 1; i <= len; i++)
{
if (!nums.Contains(i))
{
res.Add(i);
}
}
return res;
}
诡异的思想答案:
击败90.00%
public static IList<int> FindDisappearedNumbers(int[] nums)
{
var res = new List<int>();
for (int i = 0; i < nums.Length; i++)
{
int index = Math.Abs(nums[i]) - 1;
if (nums[index]>0)
{
nums[index] = -nums[index];
}
if (nums[index]>0)
{
nums[index] = -nums[index];
}
}
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]>0)
{
res.Add(i + 1);
}
}
return res;
}