因为给定的数组是乱序,所以可以先排序或找到收尾,我的方式是找到收尾,然后从小到大循环,如果存在不包含的数即可返回。
如果扩展一下,可能存在多个缺失数字的时候,那就需要考虑到需要多次调用方法,需要用到递归。
static void Main(string[] args) { int [] str=new []{9,6,4,2,3,5,7,0,1}; int answer = JudgeCircle(str); if (answer == -1) Console.WriteLine("输入参数有误!!"); Console.WriteLine(answer); Console.ReadKey(); } private static int JudgeCircle(int[] nums) { if (nums.Length <= 1) return -1; int min = nums[0], max = nums[0]; for (int i = 0; i < nums.Length; i++) { //循环判断区间 if (nums[i]>=max) { max = nums[i]; } if (nums[i] <= min) { min = nums[i]; } } int jlength = max; int p=-1; for (int j = min; j < jlength; j++) { if (!nums.Contains(j)) { return p= j; } } return p; }