題目:
已知三個公升序整數陣列a[l], b[m]和c[n]。請在三個陣列中各找乙個元素,使得組成的三元組距離最小。三元組的距離定義是:假設a[i]、b[j]和c[k]是乙個三元組,那麼距離為:
distance = max(|a[i]-b[j]|, |a[i]-c[k]|, |b[j]-c[k]|)
請設計乙個求最小三元組距離的最優演算法,並分析時間複雜度。
分析參考:
三個數兩兩之差的最大值是三個數中的最大值減去三個數中的最小值,即可以將距離公式轉換為:
distance = max(a[i],b[j],c[k]) - min(a[i],b[j],c[k]) ,因為陣列都為公升序,所以每次只需要將min(a[i],b[j],c[k]) 所在陣列的索引值加1即可。
時間複雜度為o(l+m+n)
#include #include "limits.h"
using namespace std;
//求三個數的最小值
int t_min(int x, int y, int z)
//求三個數的最大值
int t_max(int x, int y, int z)
//三個數中的最大差
int triple_dist(int x, int y, int z)
//求最小值所在陣列,若為1,最小值在a陣列中,將其索引加1,其它類似
int min_index(int x, int y, int z)
int main() ;
int b = ;
int c = ;
int l = 5, m = 6, n = 6;
int ap = 0, bp = 0, cp = 0;
int dist = int_max;
while(ap < l && bp < m && cp < n)
cout << "the distance is: " << dist;
return 0;
}
阿里巴巴筆試題求最小三元組距離
已知三個公升序整數陣列a l b m 和c n 請在三個陣列中各找乙個元素,是的組成的三元組距離最小。三元組的距離定義是 假設a i b j 和c k 是乙個三元組,那麼距離為 distance max a i b j a i c k b j c k 請設計乙個求最小三元組距離的最優演算法,並分析時...
等差三元組
題目 和是2組不同的等差三元組,除了等差的性質之外,還有個奇妙的地方在於 5 2 3 2 1 2 7 2 5 2 3 2 n 15。同這對三元組也存在同樣的性質 19 2 15 2 11 2 7 2 5 2 3 2 n 15。這種成對的三元組還有很多。當n 15時,有3對,分別是和,和,和。現給出乙...
完美三元組
問題 定義完美三元組,a,b,d a是d的倍數,b是d的倍數,且a b d 1 輸入 t組測試資料,第一行乙個t 1 t 10000 之後t行每行兩個整數l,r,表示三元組中a 的取值區間 l,r 在此條件下,求滿足的完美三元組的總數 1 l r 100000 輸出 乙個整數。分析 首先,a的值已經...