1. 程式人生 > >求無序數組的兩兩元素之差絕對值的最小值

求無序數組的兩兩元素之差絕對值的最小值

復雜 區間 連續子序列 nbsp 桶排序 復雜度 i+1 表示 構造

無序數組的兩兩元素之差絕對值的最小值有兩種方法:

1.類似桶排序的方案,O(n)的時間:

  先掃描一遍數組元素,求出最大值max和最小值min,將數組元素劃分到n個區間,每個區間的長度為:(max-min)/n,第一個區間為:[min,min+(max-min)/n),左閉右開區間,

掃描n個區間,所求值對應某個桶i+1中的最小值和桶i中的最大值的差.

2.構造新的數組,將原問題轉化為求最大連續子串和的絕對值最小問題,O(n)的復雜度

原數組為a1,a2,a3,...,新數組b1=a1-a2,b2=a2-a3,b3=a3-a4,,則a1和a3之差可以表示為:b1+b2,註意是連續子序列和的絕對值最小

  

求無序數組的兩兩元素之差絕對值的最小值