精华内容
下载资源
问答
  • 本篇文章给大家带来的内容是关于Java如何实现数组中查询重复的数字,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。题目一:找到数组重复的数字。在一个长度为N的数组里的所有数字都在0——n-1...

    本篇文章给大家带来的内容是关于Java如何实现数组中查询重复的数字,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    题目一:找到数组中重复的数字。

    在一个长度为N的数组里的所有数字都在0——n-1的范围之内,数组中某些数字是重复的,但是不知道有几个数字是重复了,也不知道数字重复了几次,请找到数组中任意一个重复的数字。

    解决方法一:将这个数组排序,从排序的数组中找到重复的数字是一件很容易的事情。只需要从头到尾扫描排序后的数组就可以了,排序一个长度为N的数组需要O(nLogn)的时间。

    解决方法二:利用哈希表来解决,从头到尾扫描数组的每一个数字,每次扫描到一个数字的时候,就判断是否在哈希表中是否有这个数字,这个算法的时间是O(N),但它的时间效率是一个大小为O(N)的哈希表为代价的。

    解决方法三:我们重排这个数组,从头到尾依次扫描这个数组中的每一个数字,当扫描到下标为i的数字的时候,就比较这个数字的值(m)是不是等于i,如果相等,则将m的值付给i,如果不相等,则拿他和m下标对应的值比较,直到找到所有重复的数值为止。

    82bab7d3621e2b91c54360f8a9f334cb.png

    展开全文
  • 二分查询* @author ma* @version V1.0*/public class ArrayHalfSort {/** 二分查询:* 就是用数组中的中间的一个元素和转入的变量比较,如果小于中间的元素,则以中间元素地前一个元素作为最的一个元素,重复比较,...

    /**

    * 二分查询

    * @author ma

    * @version V1.0

    */

    public class ArrayHalfSort {

    /*

    * 二分查询:

    * 就是用数组中的中间的一个元素和转入的变量比较,如果小于中间的元素,则以中间元素地前一个元素作为最的一个元素,重复比较,反之 亦然

    * 注册:

    * 1.数组为有序数组

    * 2.注册索引越界

    */

    public static void main(String[] args) {

    int[] arr = {11,22,33,44,55,66,77,88,99,100};

    arrayHalfFind(arr,11);

    System.out.println(ArrayHalfFind(arr,556));

    }

    /**

    * 二分法查找整数在数组中的索引

    * @param arr 要查找的数组

    * @param value 要查找的数字

    * @return 如果数字在数组中,则返回索引值;反之返回-1

    */

    public static int arrayHalfFind(int[] arr, int value) {

    //数组的最大索引

    int max = arr.length-1;

    //最小索引

    int min = 0;

    //定义 一个int mid 来接收数组索引的二分之一值

    int mid = (min + max)/2;

    //遍历数组

    while(arr[mid] != value){

    //如果中间的值arr[mid]大于传入 的值value,则max = mid -1;如果中间的值arr[mid]小于传入 的值value,则min = mid +1;

    if(arr[mid] > value){

    max = mid -1;

    }else if(arr[mid] < value ){

    min = mid + 1;

    }

    //如果min > max ,则数组中没有该数,返回-1

    if(min > max){

    return -1;

    }

    //得到新的中间索引

    mid = (min + max)/2;

    }

    return mid;

    }

    }

    展开全文
  • 随机不重复数组使用Java来实现今天突然想起来以前看书的时候看见过一个编程题,要求是生成一副扑克牌并且模拟一下发牌的动作。这个问题对很多人来说已经不是问题了,但是还是难倒了我这个刚入门的初学者。当初这个...

    随机不重复的数组使用Java来实现

    今天突然想起来以前看书的时候看见过一个编程题,要求是生成一副扑克牌并且模拟一下发牌的动作。

    这个问题对很多人来说已经不是问题了,但是还是难倒了我这个刚入门的初学者。当初这个问题让我头疼的地方就是怎么去得到一个随机不重复的数组。

    上网查了一查,这个其实有很多种思路。

    例如:在这里就列出了Java实现随机不重复的三种思路http://www.javaeerun.com/jr_1378708438508.html1 本身这个数组是按照顺序排放的,然后我们把这个数组里面数据的顺序打乱,再从第一个元素开始逐个获取2 本身这个数组是按照顺序排放的,然后我们随机的从里面抽取元素发出去。

    3 通过随机数直接生成随机的元素,然后比对数组里面是否有相同的元素,比对通过就放进去。

    就按照做一做吧

    首先是扑克牌类Card:

    package com.javaeerun.demo.carddemo;

    public class Card {

    private String assortment;

    // 花色

    private int number;

    // 数值

    public static final String CARD_ASSORTMENT[] = {"Spade","Heart","Diamond","Club","Red Joker","Black Joker"};// 黑桃 红桃 方片 梅花 大王 小王

    public Card(String assortment, int number) {super();

    this.assortment = assortment;

    this.number = number;

    }

    public String getAssortment() {

    return assortment;

    }

    public void setAssortment(String assortment) {this.assortment = assortment;

    }

    public int getNumber() {

    return number;

    }

    public void setNumber(int number) {

    this.number = number;

    }

    @Override

    public String toString() {

    return"Card [assortment="+ assortment

    +", number="+ number +"]";

    }

    }

    15198989184476.jpg

    Java设计模式之命令模式

    命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。

    命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

    命令模式的结构

    命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。

    每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。

    命令允许请求的一方和接收请求的一方能够独立演化,从而具有以下的优点:

    (1)命令模式使新的命令很容易地被加入到系统里。

    (2)允许接收请求的一方决定是否要否决请求。

    (3)能较容易地设计一个命令队列。

    (4)可以容易地实现对请求的撤销和恢复。

    (5)在需要的情况下,可以较容易地将命令记入日志。

    下面以一个示意性的系统,说明命令模式的结构。

    命令模式涉及到五个角色,它们分别是:

    客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。

    命令(Command)角色:声明了一个给所有具体命令类的抽象接口。

    具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通常叫做执行方法。

    请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。

    接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

    源代码

    接收者角色类

    复制代码

    publicclass Receiver {

    /**

    * 真正执行命令相应的操作

    */

    publicvoidaction(){

    System.out.println("执行操作");

    }

    }

    复制代码

    抽象命令角色类

    复制代码

    publicinterface Command {

    /**

    * 执行方法

    */

    voidexecute();

    }

    展开全文
  • java数组重复数据

    2010-11-15 17:56:21
    也是网上找的,写在这方便自己查询,很好用...//去除数组重复的记录 public static String[] array_unique(String[] a) { // array_unique List list = new LinkedList(); for(int i = 0; i < a.length;...
    也是网上找的,写在这方便自己查询,很好用的说 :idea: 

    //去除数组中重复的记录
    public static String[] array_unique(String[] a) {
    // array_unique
    List<String> list = new LinkedList<String>();
    for(int i = 0; i < a.length; i++) {
    if(!list.contains(a[i])) {
    list.add(a[i]);
    }
    }
    return (String[])list.toArray(new String[list.size()]);
    }
    展开全文
  • 目录数组综述Java中的数组创建数组访问数组初始化数组有序数组线性查找二分查找有序数组的优缺点大O表示法(order of)为什么不用数据解决一切- 小结数组综述数组是最广泛的数据存储结构,其中还有一种特殊数组(有序...
  • java数组

    2017-12-12 14:43:00
    目录: 声明数组; 初始化数组; 查看数组长度;...遍历数组;...int数组转成string数组;...数组中是否包含某一个值;...去重复; 查询数组中的最大值和最小值; 备注:文内代码具有关联性。 ...
  • 在一个长度为N的数组里的所有数字都在0——n-1的范围之内,数组中某些数字是重复的,但是不知道有几个数字是重复了,也不知道数字重复了几次,请找到数组中任意一个重复的数字。 解决方法一:将这个数组排序,从排序...
  • 2 ... 3 import java.util.Arrays; 4 5 /** 6 * 买彩票 7 * @author 丁璐同学 8 * 重复则重新遍历查询思想 9 */ 10 public class Lotery2 { 11 12 public static void main...
  • 题目二:不修改数组找到重复的数字。 在一个长度为n+1的数组中,所有的数字都在1-n的范围之内,所以数组中至少一个是重复的,请找到重复的数字,但不能修改输入的数组 方法一:创建一个长度为n+1的辅助数组,然后...
  • 题目:在一个二维数组中,每一行都按照从左到右递增都循序,每一列都是按照从上到下递增到循序,请写出一个函数,可以最快的找到和其相等到数字。 解题思路: java代码实现 运行之后 ...
  • JAVA 数组的常用操作

    2019-09-24 20:44:37
    目录: 声明数组; 初始化数组; 查看数组长度;...遍历数组;...int数组转成string数组;...数组中是否包含某一个值;...将数组转成set集合;...去重复; 查询数组中的最大值和最小值; 备注:文内代码具有关...
  • 在网上找了很久,没有很全面的,总是缺几个,索性自己资料总结一下子1.1 for 循环不过多解释,大家都懂实例:var arr = [1, 2, 3, 4, 7, 8, 9]for (let i = 0;i < arr.length;i++) {console.log(arr[i]);}...
  • 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 方法一:...
  • 数组和集合的区别 1.数组大小是固定的 集合不是固定 2.数组只能放一种类型的数据 集合可以放多种类型的数据 list 和 set 的区别 1.list 有序,可重复 2.set 无序,不可以重复 list arraylist:通过数组的方式进行...
  • java 实现二分法查找出数组重复数字

    千次阅读 2017-08-18 17:11:48
    java 实现二分法查找出数组重复数字,如果存在能重复数字,最差时间复杂度是O(n^2),最小是O(nlogn)
  • 有一个数组,有一个数x,是否存在数组中两个数之和等于x 两种方法实现,时耗对比 方法1: 先sort, head位置=0, tail位置=x的位置 如果 array[head]+ array...方法2: 暴力破解,两层for循环所有可能,会出现重复
  • java学习日记 package base; //查询数字的个数使用map,优先使用 import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; public class Test3_3 { public ...
  • 最近项目中出现一个需求类似于"查询有序数组中所有重复的元素",一开始的想法是使用两次for循环遍历,但是这样的话运算量是几何级的(假设数组长度为len,则需运算len*len次才能得到结果),速度方面令人很不满意,于是在...
  • 最近项目中出现一个需求类似于"查询有序数组中所有重复的元素",一开始的想法是使用两次for循环遍历,但是这样的话运算量是几何级的(假设数组长度为len,则需运算len*len次才能得到结果),速度方面令人很不满意,于是在...
  • java中二分查询数组

    2018-05-07 11:05:00
    /** * 二分查询 ... * 就是用数组中的中间的一个元素和转入的变量比较,如果小于中间的元素,则以中间元素地前一个元素作为最的一个元素,重复比较,反之 亦然 * 注册: * 1.数组为有序数组 ...
  • java数组(一维)

    2018-03-26 09:23:09
    目录:声明数组;初始化数组;查看数组长度;遍历数组;int数组转成string数组;...去重复;查询数组中的最大值和最小值;备注:文内代码具有关联性。1.声明数组;1234String [] arr;int arr1[];St...
  • 对于重复使用的如check、print类的功能以函数编写减少代码冗余 对数组的操作主要是2点:① 越界问题;②索引下标0~length-1问题; 使用独立的size作为数组的有效元素个数统计,更利于可读性; import java.util....
  • 1、SetUniqueList 是 Commons-Collections 项目中的一个类,用来构造不重复的元素列表[代码如下]Test.javapackage net.oschina.tester;import java.util.*;import org.apache.commons.collections.list....
  • 学生信息管理系统(已测试可运行) 思路: 1.菜单部分 通过使用switch来调用不同的...通过访问学生对象数组里的学生对象来进行增删改,此处要注意的是,新创建的学生对象数组的初始值为null,如果不进行是否为null的
  • Java -自定义数组

    2021-01-15 05:49:40
    数组存放相同数据类型数据且大小在初始化已被固定,因此使用灵活性被减小,对此在Java 出现了Arraylist 动态数组,其容量大小灵活扩展。此文将实现类似的动态数组,进行基本的增删改操作。为了适应各种数据类型的...
  • Java集合:数组的使用

    2019-02-16 16:15:04
    Java中对Array数组的常用操作 目录: 声明数组; 初始化数组; 查看数组长度; 遍历数组; int数组转成string数组; 从array中创建arraylist; 数组中是否包含某一个值; 将数组转成set集合; 将数组转成...
  • 集合表示一组被称为其元素的对象Llist有序,可重复ArrayList底层实现的数据结构是数组,查询快,增删慢。线程不安全,效率高。LinkedList底层实现的数据结构是双向链表,查询慢,增删快。线程不安全,效率高。Vect.....
  • java中对数组的操作

    2017-05-05 10:40:48
    转载自:Java中对数组的操作 目录: 声明数组;初始化数组;查看数组长度;遍历数组;int数组转成string数组;从array中创建arraylist;数组中是否包含某一个值;将数组转成set集合;将数组转成list集合;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,278
精华内容 511
关键字:

java数组查重复

java 订阅