Esempio n. 1
0
        public static bool IsValidCover(int[] nums, IList <Interval <int> > cover)
        {
            var intervals = new List <Interval <int> >(cover);

            intervals.Sort();

            var iArray = new IntervalArray <int>(intervals.ToArray());

            int i = 0;

            while (i < nums.Length)
            {
                var x           = nums[i];
                var overlappers = iArray.GetAllOverlappingIntervals(x, x).ToList();
                if (overlappers.Count == 0)
                {
                    return(false);
                }
                var rangeEnd = GetRangeEnd(overlappers);
                // get the first number that is past the range of overlappers
                var j = Array.BinarySearch(nums, rangeEnd + 1);
                if (j < 0)
                {
                    j = ~j;
                }
                i = j;
            }
            return(true);
        }