题意:有n个数,k次操作,接下来给出n个数
k次操作(每次可使一个数减一或加一)可以不全用完;
经过这些操作后,求最大值和最小值的差值;
如例一;
4 5
3 1 7 5
有四个数,五次操作(1+1+1)=3;(7-1-1)=5;(只用了四次,最后一次用不用对结果不影响,因为最大值还是5,最小值还是3)差值为5-3=2;
这道题我当初的代码100多行,我第一次打这么多字,事实证明,想的太复杂越容易出错,我连代码都打不对了,
我当初想的是两次遍历,但是我还是每次都从1和n遍历,没有节省时间,反而更复杂,
其二,就是我将数组里的数全部都改变了, 使得每一次都要更新数组,程序更麻烦。
还有就是考虑不全面,我只考虑了有多少数相同并且和比它大一点的数的差值相乘和k比较,没考虑小一点的差值也可以并且也可以直接结束了;
所以这道题较为简便的做法为设一个类似指针的变量 i 和 j (前和后都要有),每次用的时候,不需要加或减数组里的东西,只需要将这些记录下来,然后先减改变最快的,然后 i++ 或 j--;直到最