题目:最长的可整合子数组的长度。给定一个整型数组 arr,请返回其中最大可整合子数组的长度。例如:[5,5,3,2,6,4,3] 的最大可整合子数组为[5,3,2,6,4],所以返回 5。
先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数差的绝对值都为 1,则该数组为可整合数组。例如:[5,3,4,6,2] 排序之后为 [2,3,4,5,6],符合每相邻两个数差的绝对值都为 1,所以这个数组为可整合数组。
分析:
1、暴力:
列出所有的子数组【N^2】,然后再对每个子数组复制,再排序(NlogN),再遍历看满不满足,共 O(N^3logN) 【子数组:数组中一个或连续的多个整数组成一个子数组】;
2、优化:
以后看到复杂的标准先自己改为简洁的标准。新的标准:一个数组如果是可整合的:
1)无重复值;
2)最大值减去最小值等于数组个数减 1 的话,则是可整合的。
则尝试所有的子数组的复杂度为 O(N^2),判