![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Maugs_Luyao
业余程序猿,知名段子手
展开
-
大数据中的中位数,第K个大的数,前K个大的数
直接几亿的数据,限制内存,找出topK的数,或者中位数这类题,目前我的思路有以下几种,总结如下:1.桶排序:1️⃣ 数据量特别大,分布在-2^31-2^31-1 可以制造100W 一个区间的桶,1000个就是10亿,遍历数据也可以每1000W 读取一次,数字在哪个区间,对应区间内的值+1,这样可以迅速找到中位数对应的桶,然后在这个桶中再次寻找中位数。2️⃣quickSelect思想,和quickSort大体相同,不同的地方是:quickSelect 一次排序后,丢掉无用的另一段,举例:寻找第K.原创 2021-06-30 14:49:44 · 222 阅读 · 0 评论 -
约瑟夫环——公式法(递推公式)-详细版
因为看了一大大牛的分析推导,才恍然大悟这个东西。实在是高。这里直接 给个链接过去看吧!哈哈https://blog.csdn.net/u011500062/article/details/72855826原创 2021-06-17 13:24:13 · 321 阅读 · 0 评论 -
位运算实现加减乘除
一. 位运算的基本操作A = 0011 1100B = 0000 1101操作符 描述 例子 & 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100 | 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101 ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001 ~ 按位取反运算符翻转操作数的每一位,即0变成1,1原创 2021-06-15 14:40:23 · 307 阅读 · 0 评论 -
把字符串转换成整数
public class Solution { public int StrToInt(String str) { if(str.length() == 0)return 0; String fuhao = str.substring(0,1); Boolean isPositive = false; if(fuhao.equals("+")){ str = str.substring(1); .原创 2021-06-15 13:55:59 · 138 阅读 · 0 评论 -
归并排序及延伸问题
1.归并排序算法2.归并排序问题-小和问题目录1.归并排序算法2.归并排序问题-小和问题原创 2021-06-14 22:49:50 · 91 阅读 · 0 评论 -
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */// public int[] FindNumsAppearOnce (int[] array) {// // write cod.原创 2021-06-14 16:07:21 · 634 阅读 · 0 评论 -
二叉树的多种遍历及dfs,bfs思考
//二叉树广度遍历 //二叉树的中序 先序 后续都是dfs 深度遍历, //回溯 就是剪枝原创 2021-06-11 15:59:11 · 120 阅读 · 1 评论 -
求最长不重复子数组问题
public int maxLength (int[] arr) { HashMap<Integer,Integer> map = new HashMap<>(); int max = 1; for(int start = 0, end = 0; end<arr.length ; end++){ if(map.containsKey(arr[end])){ //重复了 start = ...原创 2021-06-11 15:57:07 · 216 阅读 · 0 评论 -
KMP算法之我思
如果没了解过KMP,我也不详细介绍了,本篇目的在于写下来,了解的更彻底。首先kmp是解决查询字符串2 在字符串1中的位置的算法!String.indexOf()并不使用,因为kmp需要额外的空间和原创 2021-06-11 11:14:12 · 132 阅读 · 1 评论 -
二叉搜索树的后序遍历序列
首先介绍二叉搜索树:若左子树不为空,左子树所有的整数小于等于根,若右子树不为空,右子树所有的整数大于等于根。后序遍历,左右根的遍历顺序造成,最后一个数肯定是根。剑指offer一道算法题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。public class Solution { p...原创 2019-08-30 10:31:56 · 102 阅读 · 0 评论 -
快速幂的应用
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。/** * 1.全面考察指数的正负、底数是否为零等情况。 * 2.写出指数的二进制表达,例如13表达为二进制1101。 * 3.举例:10^1101 = 10^0001*10^0100*10^1000。 * 4.通过&1和>>1来逐位读取1101,为1时将该...原创 2019-05-30 15:00:43 · 231 阅读 · 0 评论 -
java位运算及实例和原码.反码,补码的介绍
1.异或: 在java中 ,运算 符号是 ^ , 只有 n ^ 0时才能得 n 相等两个数 异或 得 0,1 ^ 0 = 1; 1^1=0;n ^ n = 0; n ^ 0=n; a ^ b ^ c = a ^ (b ^ c);有了以上的基础,异或运算符可用于翻转 二进制数, 比如 :一: 翻转低四位x = 1110 1010x ^ 0000...原创 2019-03-12 16:21:55 · 292 阅读 · 1 评论 -
十大经典排序算法(动图演示)
0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前...转载 2019-03-07 10:45:59 · 167 阅读 · 0 评论