文章
28
粉丝
19
获赞
0
访问
1.4k
(1) 使用三指针法,为三个数组分别分配三个index号i,j,k = 0 ;指向最首元素,使用变量minDis存储最小距离,若此时计算出的D小于minDis则更新minDis = D;比较此时三个数组中的元素,最小的那一个索引自增,若其无法自增,则次小元素的索引自增,以此类推,直至遍历完毕,返回minDis;
(2)
#define INT_MAX = 1 << 31 -1
#include<cmath>
using namespace std;
int getMinDis(int[] s1, int[] s2, int[] s3,int n1, int n2 , int n3)
{
int i = 0, j= 0, k=0;
int minDis = INT_MAX;
while(i < n1 && j < n2 && k < n3)
{
int dis = abs(a-b) + abs(b-c) + abs(c-a);
if (dis < minDis)
minDis = dis;
if(s1[i] <= s2[j] && s1[i] <= s3[k])
{
if(i + 1 < n1)
i++;
else
{
if(s2[j] <= s3[k])
{
if(j+1 < n2)
j++;
else
k++;
}
else if(s2[j] <= s1[i] && s2[j] <= s3[k])
{
if(j + 1 < n2)
j++;
else
{
if(s1[i] <= s3[k])
{
if(i+1 < n1)
i++;
else
k++;
}
else if(s3[k] <= s1[i] && s3[k] <= s3[j])
{
i...
登录后发布评论
暂无评论,来抢沙发