LintCode-379.将数组重新排序以构造最小值
将数组重新排序以构造最小值
给定一个整数数组,请将其重新排序,以构造最小值。
注意事项
The result may be very large, so you need to return a string instead of an integer.
样例
给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:
3+32+321=332321
3+321+32=332132
32+3+321=323321
32+321+3=323213
321+3+32=321332
321+32+3=321323
其中,最小值为 321323,所以,将数组重新排序后,该数组变为 [321, 32, 3]。挑战
在原数组上完成,不使用额外空间。
标签
数组
code
class Solution {
public:
/**
* @param nums n non-negative integer array
* @return a string
*/
void transferToString(string &result,int number){
if(number<10) {
result+=('0'+number);
return;
}
int temp=number;
transferToString(result,number/10);
result+=('0'+temp);
}
bool compare(int num1,int num2){
string com1,com2;
if(num1==0)
com1+=('0'+num1);
while(num1) {
com1+=('0'+num1);
num1/=10;
}
if(num2==0)
com2+=('0'+num2);
while(num2) {
com2+=('0'+num2);
num2/=10;
}
int len1=com1.size(),len2=com2.size();
int i,j;
for(i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--) {
if(com1[i]>com2[j])
return true;
else if(com1[i]<com2[j])
return false;
}
if(i==-1&&j==-1)
return false;
if(i==-1) {
while(j>=0) {
if(com2[j]<com2[j+1])
return true;
else if(com2[j]>com2[j+1])
return false;
else
j--;
}
return false;
}
else {
while(i>=0) {
if(com1[i]<com1[i+1])
return false;
else if(com2[i]>com2[i+1])
return true;
else
i--;
}
return false;
}
}
string minNumber(vector<int>& nums) {
// Write your code here
string result;
if(nums.empty())
return result;
int n=nums.size();
int i;
for(i=0;i<n;i++) {
for(int j=0;j<n-i-1;j++) {
if(compare(nums[j],nums[j+1])) {
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for(i=0;i<nums.size();i++) {
if(result.empty()&&nums[i]==0)
continue;
else
transferToString(result,nums[i]);
}
if(result.empty())
result+='0';
return result;
}
};
LintCode-379.将数组重新排序以构造最小值的更多相关文章
- LintCode2016年8月22日算法比赛----将数组重新排序以构造最小值
将数组重新排序以构造最小值 题目描述 给定一个整数数组,请将其重新排序,以构造最小值. 样例 给定[3,32,321],通过将数组重新排序,可构造6个可能性的数字: 3+32+321=332321 3 ...
- 给定数组a[N]构造数组b[N]
转自:http://blog.csdn.net/wumuzi520/article/details/7841280 给定一个数组a[N],我们希望构造数组b [N], 其中b[j]=a[0]*a[1] ...
- js中关于一个数组中最大、最小值以及它们的下标的输出的一种解决办法
今天在学习js中的数组时,遇到的输出一个数组中最大.最小值以及它们的下表,以下是自己的解决方法! <script type="text/javascript"> var ...
- Javascript获取数组中最大和最小值
取出数组中最大值或最小值是开发中常见的需求,今天继续讲解如何获取javascript数组中最大和最小值. 1.排序法 首先我们给数组进行排序,可以按照从小到大的顺序来排,排序之后的数组中第一个和最后一 ...
- JavaScript学习:取数组中最大值和最小值
在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最 ...
- Java-Runoob-高级教程-实例-数组:06. Java 实例 – 数组获取最大和最小值
ylbtech-Java-Runoob-高级教程-实例-数组:06. Java 实例 – 数组获取最大和最小值 1.返回顶部 1. Java 实例 - 数组获取最大和最小值 Java 实例 以下实例 ...
- 使用JavaScript·求数组的最大值和最小值
前言 在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 法一:其实利用 ...
- js获取数组中的最大值/最小值
目录 前言 1. 使用Math的静态方法max/min 1.1 结合ES6的扩展运算符...使用 1.2 结合apply/call方法来使用 1.3 结合reduce来使用 2. 排序获取 2.1 只 ...
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
随机推荐
- Hadoop核心架构(1)
在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍 Hadoop是apache基金会下所开发的 ...
- java中子类会继承父类的构造方法吗?
参考: https://blog.csdn.net/wangyl_gain/article/details/49366505
- HMM笔记
参考资料: 1.https://www.bilibili.com/video/av24132174/?p=4 2.<数学之美>-吴军 3.<统计学习方法>-李航 HMM(Hid ...
- VIM 键
输入 vimtutor命令,可以打开Linux使用手册(基本使用). ***. 插入键: A: 行尾插入 a: 字符后面插入 i: 字符前面插入 I: 行首插入 r:只替换一次字符 R:一直替换,直 ...
- (cmath)关于头文件cmath
关于头文件cmath // -*- C++ -*- C forwarding header. // Copyright (C) 1997-2014 Free Software Foundation, ...
- python--复习之路的目录
想要看时点链接看看,常来复习,温故而知新,可以为师矣. 1:基本类型 python--基本类型之字符串 python--基本类型之列表 python--基本类型之元组 python--基本类型之集合 ...
- Scratch入门课程(1)——把工具准备好
为了让更多的同学了解少儿编程,从今天开始,我将以每周1次的频率发布Scratch的入门课程,大约在30课时左右. 几点情况说明: 1.这批课程主要面向2-4年级的同学,难度都不大,按照教程可以很轻松地 ...
- 北京Uber优步司机奖励政策(2月20日~2月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- LeetCode: 29. Divide Two Integers (Medium)
1. 原题链接 https://leetcode.com/problems/divide-two-integers/description/ 2. 题目要求 给出被除数dividend和除数divis ...
- spring源码-BeanFactoryPostProcessor-3.2
一.BeanFactoryPostProcessor这个是spring容器的拓展之一,其目的是在容器初始化完成之前,通过beanFactory对上下文进行进行操作. 二.常用场景,需要对beanDef ...