一、算法思想1.1排序算法笔试模拟题精解之“数组变换”贡献者 | 猿圈简介:本题要分情况讨论,根据不同的情况变换不同的解决方式。题目描述等级:中等知识点:排序、贪心查看题目:数组变换给出一个长度为 n 的数组,和一个正整数 d。你每次可以选择其中任意一个元素 a[i] 将其变为 a[i] + d 或 a[i] - d,这算作一次操作。你需要将所有的元素全部变成相等元素,如果有解,请输出最小操作次数,如果无解请输出 -1。输入数字 n、数字 d,和一个长度为 n 的数组 a。1 <= n <= 100000,1 <= d<= 100, 1 <= a[i] <= 100000。8>算法笔试模拟题精解之“数组变换”输出一个数字,表示最小的操作次数,如果无解输出 -1。示例 1输入:52[3,5,7,1,9]输出:6注意最优解为全部变为 5,共 1 + 0 + 1 + 2 + 2 = 6 次。解题方法:首先判断无解的情况,可以发现 a[i],a[i]+d, a[i]-d 在 模 d 情况下的余数不会发生改变,因此如果原数组中的存在任意两个数字它们对 d 取余结果不同,那么此时无解。设余数为 r
目录
171
0
收起右侧 展开右侧
程序员面试宝典 > 算法笔试模拟题精解之“数组变换”
  • 读书笔记
    我的笔记
    暂无相关笔记,快来写一篇吧!
点击浏览下一章>>