面试笔试算法题备考(一)--阿里巴巴--排序
时间:2020-07-15
本文章向大家介绍面试笔试算法题备考(一)--阿里巴巴--排序,主要包括面试笔试算法题备考(一)--阿里巴巴--排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
等级:中等
知识点:排序、贪心
给出一个长度为 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。
输出一个数字,表示最小的操作次数,如果无解输出 -1。
示例 1
输入: 5 2 [3,5,7,1,9] 输出: 6
注意
最优解为全部变为 5,共 1 + 0 + 1 + 2 + 2 = 6 次。
C++代码
#include <iostream> #include <stdio.h> #include <string> #include <cmath> //#define Max 100000; /* 5 2 3 5 7 1 9 */ using namespace std; int Conversion(int a[], int n, int d); int main() { int Max = 100000; int n,d; int a[Max]; cin >> n; cin >> d; for (int i = 0;i < n; i++) { cin >>a[i]; } int answer = Conversion(a,n,d); cout << answer << endl; return 0; } int Conversion (int a[], int n, int d) { int Max = 100000; int b[Max] = {0}; int c[Max] = {0}; int h[Max] = {0}; //取倍数 int temp = a[0]%d; c[0] = a[0]/d; h[0] = c[0]; for (int i = 1;i<n;i++) { if (a[i]%d == temp) { c[i] = a[i]/d; h[i] = c[i]; } else{ return -1; } } int temptime = h[0]; for (int i=0; i<n-1; i++ ) { for(int j = 0; j < n-i-1; j++) { if (h[j] > h[j+1]) { int t = h[j]; h[j] = h[j+1]; h[j+1] = t; } } } int sum=0; temp = n/2; for (int i = 0; i<n ;i++){ sum+=abs(h[i]-h[temp]); } return sum; }
原文地址:https://www.cnblogs.com/sjbin/p/13308538.html
- struts2(二)之配置文件详解与结果视图
- CSS魔法堂:你真的懂text-align吗?
- 黑客可以利用传感器数据来破解手机密码
- spring-boot 速成(3) actuator
- 利用sharding-jdbc分库分表
- 利用sharding-jdbc分库分表
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
- spring-boot 速成(1) helloworld
- spring-boot 速成(1) helloworld
- 协议森林16 小美的桌号(DHCP协议)
- struts2(一)之初识struts2
- AI聊天机器人备受青睐 专家呼吁少卖萌
- CQRS框架:AxonFramework 之 Hello World
- Kubernetes的服务网格(第4部分):通过流量切换持续部署
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言区间数据回归分析
- R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable
- R软件SIR模型网络结构扩散过程模拟
- R语言中使用线性模型、回归决策树自动组合特征因子水平
- R语言缺失值的处理:线性回归模型插补
- R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
- Android如何在Gradle中更改APK文件名详解
- 面试中常见的 C 语言与 C++ 区别的问题
- Linux系统实现ansible自动化安装配置httpd的方法
- 常用Linux发行版镜像源配置小结
- Linux如何处理文件已删除但空间不释放的问题
- 解析linux或android添加文件系统的属性接口的方法
- linux查看软件的安装位置简单方法
- 使用 bind 设置 DNS 服务器的方法
- Linux jdk安装及环境变量配置教程(jdk-8u144-linux-x64.tar.gz)