`

Leetcode - MissingRange

阅读更多

Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing ranges.
For example, given [0, 1, 3, 50, 75], return [“2”, “4->49”, “51->74”, “76->99”]

[TIPS] 1.特殊情况向面试官确认,数组为空或者包含全部元素返回什么

2. 注意可扩展性,题意为[0,99],扩展为[start, end]
3 findMissingRanges2方法未在online上跑过,简单自测, findMissingRanges转载自链接以备忘,
优点在于无需额外处理特殊情形

 

    public List<String> findMissingRanges2(int[] vals, int start, int end) {
        List<String> ranges = new ArrayList<String>();
        if (vals == null || vals.length == 0) {
            ranges.add(start + "->" + end);
            return ranges;
        }
        // int need = 0; // 如果start != 0 就错了
        int need = start;
        for (int i = 0; i < vals.length; i++) {
            if (vals[i] > need) {
                ranges.add(getRange(need, vals[i] - 1));
            }
            need = vals[i] + 1;
        }
        if (need <= end)
            ranges.add(getRange(need, end));
        return ranges;
    }

    // 转载:http://www.danielbit.com/blog/puzzle/leetcode/leetcode-missing-ranges
    public List<String> findMissingRanges(int[] vals, int start, int end) {
        List<String> ranges = new ArrayList<String>();
        if (vals == null || vals.length == 0) {
            ranges.add(start + "->" + end);
            return ranges;
        }
        int prev = start - 1;
        for (int i = 0; i <= vals.length; i++) {
            int curr = (i == vals.length) ? end + 1 : vals[i];
            if (curr - prev >= 2) {
                ranges.add(getRange(prev + 1, curr - 1));
            }
            prev = curr;
        }
        return ranges;
    }

    private String getRange(int from, int to) {
        return (from == to) ? String.valueOf(from) : from + "->" + to;
    }

 

分享到:
评论
1 楼 qb_2008 2015-04-01  
line 7: int need = start;

相关推荐

    _leetcode-python.pdf

    - Search for a Range: 给定一个按照升序排列的数组,和一个目标值,确定该目标值在数组中的开始位置和结束位置。 - Search Insert Position: 在一个排序数组中查找一个目标值,如果不存在则返回应该插入的位置。 - ...

    算法-leetcode-剑指offer上的题很多

    - **数组中的第一个不重复的数字(First Missing Positive)**: 找出数组中缺失的第一个正数。 #### 排序算法 - **合并排序数组(Merge Sorted Array)**: 将两个排序数组合并成一个新的排序数组。 - **寻找数组中的中...

    股票买卖最佳时机leetcode-Dsa_Interview_Preparation:数据结构和算法面试准备

    股票买卖最佳时机leetcode 结帐解决方案分支解决方案。 话题 问题 地位 数组 1: Add_one_to_number C++ :check_mark_button: Java Python 解释。 2: Beggars_outside_temple C++ Java Python 解释。 3: Bob_and_...

    LeetCode最全代码

    201 | [Bitwise AND of Numbers Range](https://leetcode.com/problems/bitwise-and-of-numbers-range/) | [C++](./C++/bitwise-and-of-numbers-range.cpp) [Python](./Python/bitwise-and-of-numbers-range.py) | _...

    Leetcode题目+解析+思路+答案.pdf

    - **Search for a Range**:在一个排序数组中查找目标值的第一个和最后一个位置。 - **Search Insert Position**:在排序数组中查找目标值的插入位置。 2. **位操作(Bit Manipulation)**: - **Missing Number...

    算法刷题笔记leetcode/lintcode

    - First Missing Positive(缺失的第一个正数) - 2 Sum(两数之和) - 3 Sum(三数之和) - 3 Sum Closest(三数之和最接近) - Remove Duplicates from Sorted Array(删除有序数组中的重复项) - Remove ...

    leetcode小白刷题-DSA_Solutions_using_PYTHON:我将通过概念和逻辑为DSA问题添加解决方案

    range [0, n], return the only number in the rangethat is missing from the array. Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity? 问题 2:-...

    LeetCode练习答案

    - **缺失数字(Missing Number)**: 给定一个包含[0, n]范围内所有数字的数组`nums`,但缺少了一个数字,找到这个缺失的数字。 - **判断2的幂(Power of Two)**: 判断一个给定的正整数是否为2的幂。 - **计算1的位数...

    算法学习笔记

    - First Missing Positive:找出最小的正整数,它在数组中未出现。 - Kth Largest Element in an Array:在未排序的数组中找到第k大的元素。 - Binary Search:二分查找法。 - First Position of Target:在有序数组...

Global site tag (gtag.js) - Google Analytics