数组排序之后相邻数的最大差值题目给定一个整型数组arr,返回如果排序之后,相邻两数的最大差值。arr=[9,3,1,10]。如果排序,结果为[1,3,9,10],9和3的差为最大差值,故返回6。arr=[5,5,5,5]。返回0。如果arr的长度为N,请做到时间复杂度为O(N)。
思路如果用排序做,最好的是O(n*log(n))利用桶排的思想比如有10个数,最小是10,最大是110,那么就化为11个区间,最后一个区间是最后一个数其余区间就是[10,20),[20,30),[30,40)…[90,100),[100,110)然后把这10个数字放到11个区间里去,那么必然有一个区间是空的而最大差值是一个非空区间最大值与另一个非空区间最小值得差,(两者中间可能有空区间)因为同一区间内的差值最大是就是间隔
因此需要先找到最大值和最小值,然后划分区间,把数字放到区间中去,找最大差值
阅读全文...