提供一个数组,例如:1,3,4,6,8,
如果想根据这个数组产生一个连续数组,其中新的数组的最大数和最大数+1不在提供的数组内,
比如:0,虽然不在数组内,但0+1在,不满足要求,
比如:0,1,1在数组内,不满足要求,
... ...
根据要求可以得到最终的数组应该是
0,1,2,3,4,5,6,7,8,9
利用这个逻辑来编程,代码如下:
- // <summary>
- /// 根据任意不重复的数组产生一个连续的新数组且最短,其中新数组最大数或者最大数+1不在该任意数组中
- /// </summary>
- public static int[] GetNewArray(int[] arr)
- {
- var list = new List<int>();
- for (int i = 0; i <= arr.Max() + i; i++)
- {
- list.Add(i);
- if (!arr.Any(p => p == i))
- if (!arr.Any(p => p == i + 1))
- break;
- }
- return list.ToArray();
- }
再验证一个,
比如数组是1,3,5,8
那显然结果应该是0,1,2,3,4,5,6
测试结果截图:
