暴力法太消耗时间,因此转换思路,由于无序那么至少遍历一遍,尽量找一种能遍历一遍的算法,可排序后调用题一的方法,也可新建全新集合,并删除未被删除的元素被保留的即为留下来的,但此题极为特殊只删除一个元素,因此总和减去所有未删除的数得到的即是删除的数
private static int findMissingNumber(int start, int end, List<Integer> list) { double sum = (start + end) * ((end - start + 1) / 2.0); for (Integer integer : list) { sum -= integer; } return (int) sum; }
这样计算虽然很简单速度也很快,但如果缺失的是两个以上的数就难以应对。
Sign in to make a reply
a学习苦学习累68604
暴力法太消耗时间,因此转换思路,由于无序那么至少遍历一遍,尽量找一种能遍历一遍的算法,可排序后调用题一的方法,也可新建全新集合,并删除未被删除的元素被保留的即为留下来的,但此题极为特殊只删除一个元素,因此总和减去所有未删除的数得到的即是删除的数