文章
37
粉丝
0
获赞
7
访问
3.5k
(1) 利用三个指针指向每个集合的起始索引0,再设置一个变量min记录最小距离,不断比对三个数组指针所在元素的最小者并计算距离,然后让最小的指针后移一位(若大小相同,则集合名称数字较小者指针后移,例如S1和S2的元素大小相同,S1指针后移),直到某个指针到达集合尽头(指针值 = 集合长度)结束,返回min。
(2) C语言:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int solution(int S1[], int S2[], int S3[], int l1, int l2, int l3) { // l1、l2、l3分别代表S1、S2、S3的长度
int ptr1 = 0, ptr2 = 0, ptr3 = 0;
int min = INT_MAX; // 记录最小距离
while (ptr1 != l1 && ptr2 != l2 && ptr3 != l3) {
int a = S1[ptr1], b = S2[ptr2], c = S3[ptr3];
int dis = abs(a - b) + abs(b - c) + abs(c - a); // 距离
if (dis < min) min = dis; // 如果当前距离更小,则更新最小距离
int minOne = 1, minValue = a; // minOne = i,则Si对应指针后移
if (b < minValue) {
&nb...
登录后发布评论
暂无评论,来抢沙发