精华内容
下载资源
问答
  • * 获取一个指定位数的随机码 * @return */ public static String getRandomCodeStr(Integer length){ Set<Integer> set = getRandomNumber(length); // 使用迭代器 Iterator<Integer&...

    /**

    * 获取一个指定位数的随机码

    * @return

    */

    public static String getRandomCodeStr(Integer length){

    Set<Integer> set = getRandomNumber(length);   

    // 使用迭代器   

    Iterator<Integer> iterator = set.iterator();   

    // 临时记录数据   

    String temp = "";   

    while (iterator.hasNext()) {   

    temp += iterator.next();      

    }

    return temp;

    }

    /**  

    * 获取一个四位随机数,并且四位数不重复  

    *   

    * @return Set<Integer>  

    */  

    private static Set<Integer> getRandomNumber(Integer length) {   

       // 使用SET以此保证写入的数据不重复   

    Set<Integer> set = new HashSet<Integer>();   

    // 随机数   

    Random random = new Random();   

         

    while (set.size() < length) {   

    // nextInt返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)   

    // 和指定值(不包括)之间均匀分布的 int 值。   

    set.add(random.nextInt(10));   

    }   

    return set;   

    展开全文
  • 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 import java.util.ArrayList; import java.util.PriorityQue...

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

    import java.util.ArrayList;
    import java.util.PriorityQueue;
    
    public class Solution {
        /**
         *如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,
         * 那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,
         * 那么中位数就是所有数值排序之后中间两个数的平均值。
         * 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
         *
         * 使用java中的优先队列,然后计算位置,取出数据,
         * 因为在取数据的过程中会把队列的数据取出,记录取出的数据,放回去就行了
         * 看有的人的挺复杂,可能是追求时间很短吧
         * 我这个我感觉时间复杂度NlogN
         * */
        PriorityQueue<Integer> p = new PriorityQueue<>();
        public void Insert(Integer num) {
            p.add(num);
        
        }
    
        public Double GetMedian() {
            int len = p.size();
            int count = (len + 1) / 2;
            ArrayList<Integer> lists = new ArrayList<>();
            for (int i = 0; i < count; ++i) {
                lists.add(p.poll());
            }
            if (len % 2 != 0) {
                p.addAll(lists);
                return lists.get(count - 1) * 1.0;
            } else {
                lists.add(p.poll());
                p.addAll(lists);
                return (lists.get(count - 1) + lists.get(count)) / 2.0;
            }
        }
    
    
    }

     

    展开全文
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 题解  我们可以设置一个大顶堆和一个小顶堆,在每次获取到数据时根据数据是第几个来确定奇偶,从而将每次插入的数分开放入两个堆...

    题目

    题目描述
     如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。


    题解

     我们可以设置一个大顶堆和一个小顶堆,在每次获取到数据时根据数据是第几个来确定奇偶,从而将每次插入的数分开放入两个堆中,在每次放入完成后,将所在堆的堆顶放入另外一个堆中,从而确保数量的平均以及大小顺序按一定顺序排列,这样每次小顶堆中的数据都大于大顶堆,从而使得判断中位数只需看两个堆的堆顶即可。


    代码

    import java.util.*;
    
    public class Solution {
        PriorityQueue<Integer> minHeap = new PriorityQueue<>(); //小顶堆
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>(new Comparator<Integer>(){
            //大顶堆
            @Override
            public int compare(Integer i1,Integer i2){
                return i2-i1;//降序排列,小顶堆中是i1-i2
            }
        });
    //Lambda表达式写法:
    //PriorityQueue<Integer> Heap=new PriorityQueue<>((Comparator<Integer>)(o1,o2)->o2-o1);
    
        int count = 0;//记录当前个数是奇数还是偶数
        public void Insert(Integer num) {
            //个数为偶数的话,则先插入到大顶堆,并调整,然后将大顶堆中最大的数插入小顶堆中
            if(count % 2 == 0){
                maxHeap.offer(num);
                int max = maxHeap.poll();
                minHeap.offer(max);
            }else{
                //个数为奇数的话,则先插入到小顶堆,然后将小顶堆中最小的数插入大顶堆中
                minHeap.offer(num);
                int min = minHeap.poll();
                maxHeap.offer(min);
            }
            count++;
        }
    
        public Double GetMedian() {
            //当前为偶数个,则取小顶堆和大顶堆的堆顶元素求平均
            if(count % 2 == 0){
                return new Double(minHeap.peek() + maxHeap.peek())/2;
            }else{
                //当前为奇数个,则直接从小顶堆中取元素即可,所以我们要保证小顶堆中的元素的个数。
                return ((double)minHeap.peek());
            }
        }
    }
    
    展开全文
  • 获取整数每一位数

    获取整数中每一位数规律:

    数字%10  

    取余及就是个位数,2位数除10再取余,3位数除10再除10取余。。。。


    package day1;
    
    public class shuixianshu {
    
    	public static void main(String[] args) {
    		boolean b = false;
    		for (int i = 100; i < 1000; i++) {
    			//b = shuiXian(i);
    			b = shuixian(i);
    			if (b) {
    				System.out.println(i);
    			}
    		}
    		System.out.println("-------------------");
    		getAllShu(23456789);
    	}
    
    	// 第二种
    	public static boolean shuiXian(int shu) {
    		boolean flag = false;
    		int t1 = shu / 100;
    		int t2 = (shu % 100) / 10;
    		int t3 = shu % 10;
    		 int sum=t1*t1*t1+t2*t2*t2+t3*t3*t3;
    		//int sum = (int) (Math.pow(t1, 3) + Math.pow(t2, 3) + Math.pow(t3, 3));
    		if (sum == shu) {
    			flag = true;
    		}
    		return flag;
    	}
    
    	// 第一种
    	public static boolean shuixian(int shu) {
    		boolean flag = false;
    		String tm = Integer.valueOf(shu).toString();
    		char[] c_tm = tm.toCharArray();
    		int tm1 = Integer.parseInt(Character.valueOf(c_tm[0]).toString());
    		int tm2 = Integer.parseInt(Character.valueOf(c_tm[1]).toString());
    		int tm3 = Integer.parseInt(Character.valueOf(c_tm[2]).toString());
    		int sum = tm1 * tm1 * tm1 + tm2 * tm2 * tm2 + tm3 * tm3 * tm3;
    		if (sum == shu) {
    			flag = true;
    		}
    		return flag;
    	}
    	
    	//获取每个数字
    
    	public static void getAllShu(int shu){
    		int[] m=new int[9];
    		int index=0;
    		//使用规律,小数取整只留整数部,及nm%10=m
    		while(shu>0){
    			m[index]=shu%10;
    			index++;
    			shu/=10;
    		}
    		
    		for(int i=0; i<index; i++){
    			System.out.println(m[i]);
    		}
    	}
    }
    


    展开全文
  • Java获取数组前几最大

    千次阅读 2020-06-04 10:28:14
    本篇使用JDK自带java.util包下TreeSet,TreeSet基于TreeMap实现,TreeMap基于红黑树 利用TreeSet重写compareTo方法指定排序规则 public static void main(String[] args) { //被测数组 int[] a = {3,8,4,2,3,8,1,...
  • 1.题目描述 ...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 2.算法描述 什么是堆? 堆就是用数组实现的一颗完全二叉树,最大堆的根元素值最大,并且左右子树也是最大...
  • 数据流的中位数Java) 题目描述 如何得到一个数据流中的中位数?...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数 代码: import java.util.PriorityQueue; /**...
  • java 获取小数点后2位数

    千次阅读 2019-08-20 23:37:24
    注意:运算一定要使用double类型计算,否则精度会不准。 /** * 精确到小数点后2,返回double类型 * @param d * @return double */ public static double getdecimal2(double d) { d = (double) ...
  • java中如何获取一个正整数的位数?

    万次阅读 2015-09-17 19:47:54
    java中如何获取一个正整数的位数? 第一种(使用%,math.log) int a = 1104;  // 最后一  System.out.println(a % 10);    int m = 1;  for (int i = 0; i int) Math.log10(a);...
  • 题目描述 如何得到一个数据流中的中位数?...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 解题思路 1.调用库函数排序,用ArrayList存储。 import java.util.Ar...
  • double f = 0.1232332; 1.BigDecimal ...//获取小数点后面2位数 double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() 这是BigDecimal下的给定舍入的模式,上面用的是ROUND_HALF_UP Dec...
  • java 商业保留有效位数和小数位数

    千次阅读 2018-01-19 11:59:29
    之前,我曾写过一篇 java使用BigDecimal 处理商业精度及高精度详解,如何去获取有效位数;当时的我,没有弄清楚有效和小数位数其实是互斥的! 导致在之后的工作业务出现了问题; 今天特意记录下; 问题的主要...
  • 问题:输入一个正整数(1<m<100000),把这个正整数的倒着输出,中间用空格隔开。问各位数字恰好含有 几个 3。 分析: 先确定m的位数,用while循环 再用for循环遍历到每一(对10取余可得个位数,除10...
  • 文章目录一、题目解析二、代码三、总结 一、题目解析 如何得到一个数据流中的中位数?...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 二、代码 三、总结 ...
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路 Insert()读取数据流的时候,按照数据大小进行插入,使得数组是有序的。 import java.util.ArrayList; public class Solution...
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 解题 import java.util.PriorityQueue; public class Solution { PriorityQueue<Integer> left = new Pr
  • 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 AC代码 import java.util.*; public class Solution { ...
  • 题目:如何得到一个...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 分析:建立2个大根堆,一个max用于存放数据中较小的部分,一个min存放较大的部分。整体思路是最后若max+...
  • java获取一个的二进制的某

    千次阅读 2018-03-20 17:00:13
    遇到的需求:给我一个byte类型的,然后获取二进制的第一第二,第三第四,第五第六,第七第八.. 其实就是把一个十进制的转换为二进制,然后分为四段拆分。 java byte占1个字节,1个字节八位...
  • 题目描述: 如何得到一个数据流中的...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路分析: 本题主要涉及最大堆和最小堆的问题,Java中优先级队列PriorityQueue其实就是...
  • JAVA入门基础知识积累获取一串数字每一位数的小技巧 获取一串数字每一位数的小技巧 假定有一个五位数 57648 ,我们要获取他的万位、千位、百位、十位、个位的每一个数值,有一个比较方便的做法,不用去做字串...
  • 题目描述 ...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 分析 先用PriorityQueue来设置一个小顶堆和大顶堆, 大顶堆用来存较小的数,从大到小排列;小顶堆...
  • 题目 数据流中的中位数 -- newcoder 剑指Offer 63 题目描述 如何得到一个数据流中的中位数?...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路 * 思路: * ...
  • /** * 题目: * 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值, * 那么中位数就是所有数值排序之后位于中间的数值。... * 使用GetMedian()方法获取当前读取数据的中位数。 * 解题思路: ...
  • // 获取一个二进制序列所有的偶数和奇数, 分别输出二进制序列。 // // // import java.util.Scanner; public class Demo_15{ public static void main(String[] args) { System.out.println("请...
  • 数据流中的中位数 NowCoder 题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出 偶数个数值,那么中位数就是所有数值排序...
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数 解题思路: 因为是输入流,所以直接考虑**优先队列!**那么也就是堆排序。 如何利用堆排序找出中位数,我们可以先假设已经有一个排...
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 分析 思路一: 最大堆和最小堆 代码: import java.util.*; public class Solution { private PriorityQueue<Integer> ...
  • 链接 牛客:数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值...我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路 待补充 代码 待定 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 727
精华内容 290
关键字:

获取中位数java

java 订阅