这个应该可以,大家挑挑毛病 private static List FindMissing(List input) { List missing = new List(); int count = input.Count; for (int i = 0; i < count; i++) { int value = input[i]; if (value < 0) value += count; if (input[value] >= 0) input[value] -= count; } for (int i = 0; i < input.Count; i++) { if (input[i] >= 0) missing.Add(i); else input[i] += count; } return missing; }
【在 y****n 的大作中提到】 : 这个应该可以,大家挑挑毛病 : private static List FindMissing(List input) : { : List missing = new List(); : int count = input.Count; : for (int i = 0; i < count; i++) : { : int value = input[i]; : if (value < 0) : value += count;
k*w
20 楼
Bless帖没啥,不像话的是送出去Bless后竟然 没得到包子
S*h
21 楼
也贴一个自己的练手,请赐教 // assume all values are between 0 ~ N-1 public static void findAbsentNumber(int[] arr) { if (arr == null || arr.length == 0) return; // mark all a[i] as -1 if i presents in the array for (int i = 0; i < arr.length; i++) { int hit = arr[i]; while (hit != -1 && arr[hit] != -1) { int temp = arr[hit]; arr[hit] = -1; // marked presence hit = temp; } } // print out all value without presence for (int i = 0; i < arr.length; i++) { if (arr[i] != -1) System.out.printf(" %1$d", i); } }
【在 y****n 的大作中提到】 : 这个应该可以,大家挑挑毛病 : private static List FindMissing(List input) : { : List missing = new List(); : int count = input.Count; : for (int i = 0; i < count; i++) : { : int value = input[i]; : if (value < 0) : value += count;