文档章节

Java实现正整数数组的最小拼接数

孟飞阳
 孟飞阳
发布于 2017/07/23 21:06
字数 286
阅读 3
收藏 0
点赞 0
评论 0

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字321323.

tip:你能在多长时间解决呢?请快速给出思路!

源码:

package demo1;

import java.util.Arrays;

public class IntArrayMax {
	public static void main(String args[]) {

		int[] num = { 1, 5, 9, 13, 442, 44, 6, 21, 211 };
		IntArrayMax arra = new IntArrayMax();
		arra.qsort(num, 0, num.length - 1);

		System.out.println(Arrays.toString(num));
	}

	public void qsort(int[] num, int left, int right) {
		if (left < right) {
			int partition = partition(num, left, right);
			qsort(num, left, partition - 1);
			qsort(num, partition + 1, right);
		}
	}

	public int partition(int[] num, int left, int right) {
		int partition = num[left];
		while (left < right) {
			while ((num[right] == partition || isMBigerThanN(num, num[right],
					partition)) && left < right) {
				right--;
			}
			swap(num, left, right);
			while ((num[left] == partition || isMBigerThanN(num, partition,
					num[left])) && left < right) {
				left++;
			}
			swap(num, left, right);
		}
		return left;
	}

	public void swap(int[] num, int m, int n) {
		int temp = num[m];
		num[m] = num[n];
		num[n] = temp;
	}

	public boolean isMBigerThanN(int[] num, int m, int n) {
		String num1 = String.valueOf(m);
		String num2 = String.valueOf(n);
		int temp1 = Integer.parseInt(num1 + num2);
		int temp2 = Integer.parseInt(num2 + num1);
		if (temp1 > temp2) {
			return true;
		}
		else {
			return false;
		}
	}
}

输出:

[1, 13, 211, 21, 442, 44, 5, 6, 9]

 

© 著作权归作者所有

共有 人打赏支持
孟飞阳
粉丝 202
博文 918
码字总数 536300
作品 5
朝阳
个人站长
程序员必知的8大排序(java实现)

8种排序之间的关系:  1、 直接插入排序   (1)基本思想:   在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好...

小帅帅丶
2015/01/09
0
7
JAVA 持有对象——容器初探

引言 如果一个程序只包含固定数量的且其生命周期都是已知对象,那么这是一个非常简单的程序——《think in java》 了解容器前,先提出一个问题,ArrayList和LinkedList谁的处理速度更快呢? ...

jiangmitiao
2015/08/01
0
2
Comparator与Comparable的应用

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。 阅读过程中有任何问题,请联系egg: 邮箱:xtfggef@gmail.com 微...

mrliuze
2015/08/04
0
0
561. Array Partition I - LeetCode

Question 561. Array Partition I Solution 题目大意是,给的数组大小是2n,把数组分成n组,每组2个元素,每个组取最小值,这样就能得到n个值,怎样分组才能使这n个数相加最小。 思路:有点田...

yysue
06/30
0
0
Java特殊符号>>,>>

Java中有三种移位运算符 前面两个<<,>>容易理解一些,一般我们都可以直接得出结果,最后一个忽略符号位是什么意思呢? 最大的正整数 我们知道Java中Interger占用4个字节,其中最高位为符号位...

Real_man
06/17
0
0
升级到JDK9的一个BUG,你了解吗

概述 前几天在一个群里看到一个朋友发了一个demo,说是JDK的bug,昨天在JVM的一个群里又有朋友发了,觉得挺有意思,分享给大家,希望大家升级JDK的版本的时候注意下是否存在这样的代码,如果...

你假笨
06/06
0
0
《Java从小白到大牛》之第9章 字符串

《Java从小白到大牛》纸质版已经上架了!!! 由字符组成的一串字符序列,称为“字符串”,在前面的章节中也多次用到了字符串,本章将重点介绍。 Java中的字符串 {#java} Java中的字符串是由...

tony关东升
07/11
0
0
深入理解JVM内幕:从基本结构到Java 7新特

摘要:许多没有深入理解JVM的开发者也开发出了很多非常好的应用和类库。不过,如果你更加理解JVM的话,你就会更加理解Java,这样你会有助于你处理类似于我们前面的案例中的问题。 每个Java开...

开源中国驻成都办事处
2012/12/06
0
1
深入理解 String, StringBuffer 与 StringBuilder 的区别

String 字符串常量 StringBuffer字符串变量(线程安全) StringBuilder字符串变量(非线程安全) 简要的说, String 类型和StringBuffer类型的主要性能区别其实在于 String 是不可变的对象,...

大数据之路
2013/01/16
0
0
深入Java核心:JVM中的栈和局部变量

Java开发中,每当我们在程序中使用new生成一个对象,对象的引用存放在栈里,而对象是存放在堆里的。可以看出栈在Java核心的重要位置。今天我们就继续深入Java核心这个系列,为您介绍Java中的...

郭二翔
2011/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CORS 跨域实践

本文首发于个人微信公众号《andyqian》,期待你的关注~ 前言 系统通常都是由单体应用逐渐演化而来,演化成为前后端分离的分布式应用。在享受分布式系统带来的诸多好处之时,随之而来的也有不...

andyqian
6分钟前
6
0
开源 java CMS - FreeCMS2.8 会员管理

项目地址:http://www.freeteam.cn/ 会员组管理 会员管理 会员管理 从左侧管理菜单点击会员管理进入。 添加会员 在会员列表下方点击“添加”按钮。 填写相关属性后点击“保存”按钮即可。 编...

freeteam
7分钟前
0
0
bboss升级至 v5.0.6.8版本,改善对Elasticsearch SQL 的支持

v5.0.6.8功能改进如下: (1)持久层支持支持Elasticsearch SQL,使用参考文档:玩转Elasticsearch SQL功能 (2)解决持久层/elasticsearch模板变量解析多层级不起作用问题 (3)完善国际化功能 (4...

linux-tao
8分钟前
0
0
扫码二维码跳转到某个网站

添加maven依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.goog......

gaomq
15分钟前
0
0
Windows平台下搭建Git服务器的图文教程

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己...

MKChan
21分钟前
0
0
告警系统主脚本&告警系统配置文件&告警系统监控项目

20.20 告警系统主脚本 准备工作 定义监控系统的各个目录,然后再去定义主脚本,因为是分布式的,所以需要每一台机器都需要定义,事先创建好各个脚本和各个目录,随后脚本直接拷贝过去即可,然...

影夜Linux
21分钟前
0
0
谈谈神秘的ES6——(一)初识ECMAScript

谈谈神秘的ES6——(一)初识ECMAScript 在《零基础入门JavaScript》我们就说过,ECMAScript是JavaScript的核心,是JavaScript语法和语义的解释器,同时也是一个标准。而ECMAScript标准其实也...

JandenMa
今天
1
0
第16章 Tomcat配置

16.1 Tomcat介绍 ####Tomcat介绍 LNMP架构针对的开发语言是PHP语言,php 是一门开发web程序非常流行的语言,早些年流行的是asp,在Windows平台上运行的一种编程语言,但安全性差,就网站开发...

Linux学习笔记
今天
1
0
流利阅读笔记29-20180718待学习

高等教育未来成谜,前景到底在哪里? Ray 2018-07-18 1.今日导读 在这个信息爆炸的年代,获取知识是一件越来越容易的事情。人们曾经认为,如此的时代进步会给高等教育带来众多便利。但事实的...

aibinxiao
今天
12
0
OSChina 周三乱弹 —— 你被我从 osc 老婆们名单中踢出了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小鱼丁:分享五月天的单曲《后来的我们 (电影《后来的我们》片名曲)》: 《后来的我们 (电影《后来的我们》片名曲)》- 五月天 手机党少年们想...

小小编辑
今天
810
20

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部