爪哇国新游记之二十二----排序判断重复时间复杂度为2n的位图法
import java.util.ArrayList;
import java.util.List;
/**
* 位图法
* 用于整型数组判重复,得到无重复列表
*
*/
public class Bit{
int max;
int min;
int[] arr;
public Bit(int[] arrInput){
// 找出极值
for(int i=0;i<arrInput.length;i++){
if(max<arrInput[i]){
max=arrInput[i];
}
if(min>arrInput[i]){
min=arrInput[i];
}
}
// 新建数组
arr=new int[max-min+1];
// 数组插值
for(int i:arrInput){
int index=i-min;
arr[index]++;
}
}
/**
* 判断有无元素重复
* @return
*/
public boolean hasDuplicateItem(){
for(int i=0;i<arr.length;i++){
int value=arr[i];
if(value>1){
return true;
}
}
return false;
}
/**
* 得到已排序的元素列表,有重复
* @return
*/
public List<Integer> getSortedList(){
List<Integer> ls=new ArrayList<Integer>();
for(int i=0;i<arr.length;i++){
int value=arr[i];
if(value!=0){
for(int j=0;j<value;j++){
ls.add(min+i);
}
}
}
return ls;
}
/**
* 得到已排序的元素列表,无重复
* @return
*/
public List<Integer> getUniqueSortedList(){
List<Integer> ls=new ArrayList<Integer>();
for(int i=0;i<arr.length;i++){
int value=arr[i];
if(value!=0){
ls.add(min+i);
}
}
return ls;
}
public static void main(String[] args){
int[] arr={-2,-1,3,5,7,9,30,4,-2,5,8,3};
Bit b=new Bit(arr);
System.out.print("排序后数组(有重复)为:");
for(int i:b.getSortedList()){
System.out.print(i+",");
}
System.out.println();
System.out.print("排序后数组(无重复)为:");
for(int i:b.getUniqueSortedList()){
System.out.print(i+",");
}
System.out.println();
String str=(b.hasDuplicateItem())?"有":"无";
System.out.println("数组arr"+str+"重复元素.");
int[] arr2={9,8,7,2};
str=(new Bit(arr2).hasDuplicateItem())?"有":"无";
System.out.println("数组arr2"+str+"重复元素.");
}
}
输出:
排序后数组(有重复)为:-2,-2,-1,3,3,4,5,5,7,8,9,30, 排序后数组(无重复)为:-2,-1,3,4,5,7,8,9,30, 数组arr有重复元素. 数组arr2无重复元素.
爪哇国新游记之二十二----排序判断重复时间复杂度为2n的位图法的更多相关文章
- 爪哇国新游记之二十九----访问URL获取输入流
代码: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import ...
- 爪哇国新游记之二十八----从url指定的地址下载文件到本地
package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...
- 爪哇国新游记之二----用于计算三角形面积的Point类和TAngle类
这次尝试用两个类完成一个面积计算任务: Point类代表平面上的点: public class Point { private float x; private float y; public Poi ...
- 爪哇国新游记之三十四----Dom4j的XPath操作
Dom4j是Java访问XML的利器之一,另一个是JDom.记得当年因为粗掌握点JDomAPI但项目要求使用Dom4j还闹一阵情绪,现在看来真是没必要,只花一些时间成本就进去一个新世界绝对是值得做的一 ...
- 爪哇国新游记之十四----初试JDBC
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- 爪哇国新游记之十九----使用Stack检查数字表达式中括号的匹配性
/** * 辅助类 * 用于记载字符和位置 * */ class CharPos{ char c; int pos; public CharPos(char c,int pos){ this.c=c; ...
- 爪哇国新游记之十三----XML文件读写
/** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...
- 爪哇国新游记之七----使用ArrayList统计水果出现次数
之前学习制作了DArray,了解ArrayList就容易了. /** * 用于存储水果名及数量 * */ public class Fruit{ private String name; public ...
- 爪哇国新游记之一----第一个类Cube
将这个类作为Java学习的第一个类,简单易懂易上手. /** * 正方体类 */ public class Cube { private int length;// 正方体边长 private sta ...
随机推荐
- Java坦克大战 (四) 之子弹的产生
本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...
- Selenium2+python自动化55-unittest之装饰器(@classmethod)【转载】
前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以 ...
- IE8的 JS 引擎如此不堪?
之前给客户做了个网站,其中有这么一个功能: 文章内容中,有指向某个图片的链接,链接内容为图片名称(文字),点击之后在页面上弹出该图片显示,图片可以为png,jpg,gif等. 于是,祭出了JQuery ...
- centos系统设置局域网静态IP
---恢复内容开始--- centos系统设置局域网静态IP 很多时候,我们并不希望漏油器重启之后,自己的服务器动态的获取IP,这样很不利,因为你可能装了mysql,redis,等软件,然后需要远程去 ...
- 使用Redis实现高并发分布式序列号生成服务
序列号的构成 为建立良好的数据治理方案,作数据掌握.分析.统计.商业智能等用途,业务数据的编码制定通常都会遵循一定的规则,一般来讲,都会有自己的编码规则和自增序列构成.比如我们常见的身份证号.银行卡号 ...
- Nodejs微信与Bot framework通过Direct Line连接
背景 最近开发了一个Bot Framework的小工具,能够通过Luis分析出用户输入的文本,对文本中的StyleNo/FabricNo/TrimNo提取出来,并传入另一个小系统进行查询出结果,包括文 ...
- 获取apk的appPackage和appActivity方法
aapt dump badging +客户端包所在路径+客户端包名称; aapt是SDK\tools侠的工具: adb shell logcat | grep cmp= 将 ...
- POJ 1321 棋盘问题 (DFS + 回溯)
题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...
- (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)
layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...
- English distilled
[ Any question about the job]关于辞职原因 1. What are the main objectives and responsibilities of the posi ...