Discuss / Java / 练习

练习

Topic source

第一题:

    static int findMissingNumber(int start, int end, List<Integer> list) {
        if (start != list.get(0)) {
            return start;
        }
        if (end != list.get(list.size() - 1)) {
            return end;
        }
        start = 0;
        end = list.size() - 1;
        int mid = start + (end - start) / 2;
        while (start + 1 != end) {
            if (list.get(mid) == list.get(0) + mid) {
                start = mid;
            } else {
                end = mid;
            }
            mid = start + (end - start) / 2;
        }
        return list.get(start) + 1;
    }

第二题:


    static int findMissingNumber(int start, int end, List<Integer> list) {
        int sum = (start + end) * (end - start + 1) / 2;
        for (int i : list) {
            sum -= i;
        }
        return sum;
    }

二分法的变种。

第二题

    static int findMissingNumber(int start, int end, List<Integer> list) {
        int count = start;
        int result = end;
        for (int i : list) {

            result = result ^ count ^ i;
            count++;

        }
        return result;
    }

  • 1

Reply