LeetCode163。範囲がありません



Leetcode 163 Missing Ranges



要素の範囲が包括的範囲[lower、upper]にある、ソートされた整数配列numsが与えられると、欠落している範囲を返します。

例:



入力:nums = [0、1、3、50、75]、下限= 0および上限= 99、
出力:[「2」、「4-> 49」、「51-> 74」、「76-> 99」]

質問に注意してください。下限はnums [0]以下である必要があり、上限はnums [n-1]以上である必要があります。



public List findMissingRanges(int[] nums, int lower, int upper) { List res = new ArrayList() StringBuilder sb = new StringBuilder() if (nums.length == 0) { if (lower == upper) sb.append(lower) else sb.append(lower).append('->').append(upper) res.add(sb.toString()) return res } if (nums[0] != lower) { if (lower + 1 == nums[0]) sb.append(lower) else sb.append(lower).append('->').append((nums[0]-1)) res.add(sb.toString()) sb = new StringBuilder() } for (int i = 0 i = nums[i+1] || nums[i] == Integer.MAX_VALUE) { continue } else { if (nums[i] + 2 == nums[i+1])sb.append((nums[i]+1)) else sb.append((nums[i] + 1)).append('->').append((nums[i+1]-1)) res.add(sb.toString()) sb = new StringBuilder() } } if (nums[nums.length - 1] != upper) { if (nums[nums.length - 1]+1 == upper) sb.append(upper) else sb.append((nums[nums.length - 1] + 1)).append('->').append(upper) res.add(sb.toString()) } return res }

最適化されたバージョン:

public List findMissingRanges(int[] n, int lo, int up){ List re = new ArrayList() for(int i = 0 i