# ASUS AICS
###### tags: `Interviews`
## Coding test II
[Question](https://leetcode.com/problems/minimum-time-difference/description/?fbclid=IwAR2HcDaGhRL_ZT2Bu5fc3c1i_BoAnOCDDITiWB4zMuKuZPcHVAq3GHe5ljo)
## Coding test
### max distance
給定一個整數陣列,找出任兩個相同元素的最大距離
* test cases:
A = [2,1,3,4,5,6,7,2,3]
A = [2,2,2,2,2...,2] , A.size() = 50000
### Modify to the same
給定一個整數陣列,每次可以對任一數進行+1或-1,找出最小步數,讓整個陣列都是同個數值
*該陣列整數範圍為1~4
*陣列長度1~100000
* test cases:
[1,2,1,3,1,1,3]
[3,3,3]
[1,4,1,4]
#### Solution
>we can make the array elements equal to any number in the array but we are asked to find out the minimum number of operations. So,we should find a number which minimizes the cost of equalizing the elements and that number is the **middle element**.
```cpp=
#include<iostream>
using namespace std;
int min_ops(int arr[],int n)
{
int mid = arr[n/2];
int mid1 = arr[(n/2)-1];
int res = 0,res1 = 0;
for(int i=0;i<n;i++)
{
res = res + abs(arr[i] - mid);
res1 = res1 +abs(arr[i] - mid1);
}
return min(res,res1);
}
int main()
{
int arr1[] = {2,5,7,9,10};
int arr2[] = {3,7,9,10};
cout<<min_ops(arr1,5)<<endl;
cout<<min_ops(arr2,4)<<endl;
}
```
### Check multiple of 3
給定一個字串S,每個digit都是0~9,每次可以更換字串中一位數的一個digit,求所有變換可能中被3整除的個數
* test cases:
>* Example01
> Given S = "23", should return 7. All numbers divisible by 3 that can be obtained after at most one change are (03, 21, 24, 27, 33, 63, 93).
>* Example02
> Given S = "0081" should return 11. (0021, 0051, 0081, 0084, 0087, 0381, 0681, 0981, 3081, 6081, 9081)
>* Example03
> Given S = "022" should return 9. (012, 021, 024, 027, 042, 072, 222, 522, 822)
#### Solution
1. 知道整除3的規律是所有位數加起來為3的倍數
2.