Find minimum distance between two numbers in an array
Int getMinDistance(list<int> nums, int X, int Y)
{
Int min = int_max;
For(int i = 0; i < nums.count; i++)
For(int j = i + 1; i < nums.count; i++)
{
If (((nums[i] == X && nums[j] == Y) ||
(nums[i] == X && nums[j] == Y)) &&
Math.abs(i-j) < min)
Min = math.abs(i-j);
}
Return min;
}
Int getMinDistance(List<int> nums, int X, int Y)
{
Int min = int_max;
Int prev = min(nums.IndexOf(x), nums.IndexOf(y));
For (int I = prev+1; I < nums.Count; i++)
{
If (num[i] == x || num[i] == y)
{
If (nums[prev] != nums[i] && (i-prev) < min)
{
min = I – prev;
}
Else
Prev = I;
}
}
Return min;
}
Int getMinDistance(List<int> nums, int X, int Y)
{
Var xi = nums.IndexesOf(x); // sorted and ascending
Var yi = nums.IndexesOf(y); // sorted and ascending and different from xi
Int I = 0; int j = 0;
Int val = -1; // neither x nor y
Int prev = -1;
Int min = int_max;
While ( I < xi.count && j < yi.count)
{
If ( xi[i] < yi[j])
If (val == -1) {val = x; prev = xi[i];}
If (val != x &&xi[i]-prev < min){
Min = xi[i]-prev;
Val = x;
Prev=xi[j];
}
I++;
Else{
If (val == -1){val = y; prev = yi[j];}
If (val != y &&yi[j]-prev < min){
Min = yi[j]-prev;
Val = y;
Prev = yi[j];
}
J++;
}
}
While (I < xi.count)
{
If (val == -1) {val = x; prev = xi[i];}
If (val != x &&xi[i]-prev < min){
Min = xi[i]-prev;
Val = x;
Prev=xi[j];
}
I++;
}
While (j < yi.count)
{
If (val == -1){val = y; prev = yi[j];}
If (val != y &&yi[j]-prev < min){
Min = yi[j]-prev;
Val = y;
Prev = yi[j];
}
J++;
}
Return min;
}
Int getMinDistance(list<int> nums, int X, int Y)
{
Int min = int_max;
For(int i = 0; i < nums.count; i++)
For(int j = i + 1; i < nums.count; i++)
{
If (((nums[i] == X && nums[j] == Y) ||
(nums[i] == X && nums[j] == Y)) &&
Math.abs(i-j) < min)
Min = math.abs(i-j);
}
Return min;
}
Int getMinDistance(List<int> nums, int X, int Y)
{
Int min = int_max;
Int prev = min(nums.IndexOf(x), nums.IndexOf(y));
For (int I = prev+1; I < nums.Count; i++)
{
If (num[i] == x || num[i] == y)
{
If (nums[prev] != nums[i] && (i-prev) < min)
{
min = I – prev;
}
Else
Prev = I;
}
}
Return min;
}
Int getMinDistance(List<int> nums, int X, int Y)
{
Var xi = nums.IndexesOf(x); // sorted and ascending
Var yi = nums.IndexesOf(y); // sorted and ascending and different from xi
Int I = 0; int j = 0;
Int val = -1; // neither x nor y
Int prev = -1;
Int min = int_max;
While ( I < xi.count && j < yi.count)
{
If ( xi[i] < yi[j])
If (val == -1) {val = x; prev = xi[i];}
If (val != x &&xi[i]-prev < min){
Min = xi[i]-prev;
Val = x;
Prev=xi[j];
}
I++;
Else{
If (val == -1){val = y; prev = yi[j];}
If (val != y &&yi[j]-prev < min){
Min = yi[j]-prev;
Val = y;
Prev = yi[j];
}
J++;
}
}
While (I < xi.count)
{
If (val == -1) {val = x; prev = xi[i];}
If (val != x &&xi[i]-prev < min){
Min = xi[i]-prev;
Val = x;
Prev=xi[j];
}
I++;
}
While (j < yi.count)
{
If (val == -1){val = y; prev = yi[j];}
If (val != y &&yi[j]-prev < min){
Min = yi[j]-prev;
Val = y;
Prev = yi[j];
}
J++;
}
Return min;
}
No comments:
Post a Comment