原题连接:
这个题题解里有大佬说是什么贪心和动态规划,我也不懂==。我现在的思路九十八官方的题解复述一遍
我们可以先把两个数组都排个序,这样每个学生的位置减去座位的绝对值就是要移动的次数(排序了之后就是最小的-最小的,一直到最大的-最大的)
代码如下:
int cmp(const void* e1,const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int minMovesToSeat(int* seats, int seatsSize, int* students, int studentsSize){
qsort(seats,seatsSize,sizeof(seats[0]),cmp);
qsort(students,studentsSize,sizeof(students[0]),cmp);
int ret = 0;
for(int i = 0;i < seatsSize;i++)
{
ret += abs(seats[i] - students[i]);
}
return ret;
}