最近遇到个难题,搞了2天没结果,本来以为很简单,但发现还真不好弄,特求问大家,谢谢!有一个数组,固定7个数,number型,现在要求这7个数任意2个数之差不能小于30,可以对这7个数进行加减,要求做最少的加减运算,也就是说,如果改变其中一个可以达到要求就不要改变2个,另外如果这个数是-1就忽略,最后要求经过变化后所有的7个数的范围在A B之间,-1不算,保证变化前提供的数在这之间,可能等于,不会超过,最后的数在数组中的位置要和之前保持一致 

解决方案 »

  1.   

    也就是通过最少的计算使7个数字任意两数之差都不小于30,可以对其中的数字进行加减这7个数如果有等于-1的忽略不计算最后计算生成的7个数的范围要在A-B之间,保证之前提供的在A-B范围,最高等于边界值,不会超过
      

  2.   

    有数组arr,有min 和 max将数组赋值给一个新的数组,为了不让原数据变化, 例如n进行从小到大排序确定与min接近的数min_n,然后依次排序min_n到max_nn[0](即min_n), n[1], n[2], ... n[6](即max_n)从上面凡是差额小于30的数(与n[i-1]),则要进行变更,提出放到changes变更的考虑首先判断是将变更的数值范围从最小的数n[0]到min之间范围之间确定(当然也可以从n[n.length-1]到max)也就是 n[0] - min % 30 > 0, 根据取模的获取能插入几个, 分别插入以后(changes[i] + 30),记录changelog[changes[i]] = changes[i] + 30判断是否还有,如果有的话,则 计算 n[0] 与 与 n[1] 的数值之间能插入几个,依次到 n[n.length-2] 与 n[n.length-1] 之间, 最后直至n[n.length-1] 与 max之中最后将arr.find(changelog.index) = changelog.value;