Discuss / Java / 作业

作业

Topic source

暴力法太消耗时间,因此转换思路,由于无序那么至少遍历一遍,尽量找一种能遍历一遍的算法,可排序后调用题一的方法,也可新建全新集合,并删除未被删除的元素被保留的即为留下来的,但此题极为特殊只删除一个元素,因此总和减去所有未删除的数得到的即是删除的数

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;
}

这样计算虽然很简单速度也很快,但如果缺失的是两个以上的数就难以应对。


  • 1

Reply