算法
文章平均质量分 77
你的boy_Z
timianer
展开
-
多线程无锁红包实现方案
多线程无锁红包实现方案背景朋友面试遇到过写好红包的场景,遂自己尝试了下。刚开始在如何分配的时候还是有点疑惑,后来慢慢解决,并写了一个无锁的版本,希望大家一起讨论下。如果大家用得到,帮忙点个赞哈。代码@Datapublic class RedPacket { //红包总额 private Double total; //红包份数 private Integer counts; //红包分隔之后的载体 private List<Double&g原创 2022-01-06 14:51:08 · 630 阅读 · 0 评论 -
海量数据处理学习
海量数据处理学习前言本篇博客学习一下常见的海量数据处理的问题。还记得博主去年面试度娘的时候就考了一道。题目大概的意思就是有一个很大的文件,文件中是一串数字,在有限内存的机器下,怎么将这个很大内存的文件排序。当时说了归并排序,感觉没说到重点。遂来学习学习。如何从大量的 URL 中找出相同的 URL?题目描述给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。解答思路1. 分治策略每个 URL 占 64B,那么原创 2021-07-05 16:26:03 · 470 阅读 · 3 评论 -
高级数据结构-字典树、并查集和字段树
高级数据结构Trie树(字典树)定义trie树,又称字典树或者前缀树,是一种有序的、用于统计、排序和存储字符串的数据结构,它与二叉查找树不同,关键字不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。tried树的最大有点就是利用字符串的公共前缀来减少存储空间与查询时间,从而最大限度地减少无所谓的字符串比较,是非常高效的字符串查原创 2021-01-11 19:59:56 · 380 阅读 · 2 评论 -
轻松搞定动态规划算法题
动态规划写在前面本人对动态规划的理解是我们知道初始值的一些状态,去求未来的值。而初始值到未来值的变化是有统一的公式的,类似于数学归纳法。这里说一下,说懒了的dp要点;原问题到自问题的拆分,怎么把原问题拆分成自问题。初始状态,边界状态,我们要根据它来递推到我们最终状态状态转移方程,关键退出状态,结果状态。也就是你状态转移方程的退出条件。LeetCode 70 爬楼梯记得这道题是up校招的时候猫眼电影的二面面试问我的,那时候up没刷过题,给出了一个n方的方式。记忆满深刻的。但是代码没写出来原创 2021-01-04 14:53:33 · 164 阅读 · 0 评论 -
搜索算法
搜索算法写在前面搜索算法总的来讲就是宽搜和广搜,这篇文章主要来和大家一起做一下leedcode中涉及到深搜和宽搜的题目。这里以二叉树为列讲一下基础架构的伪代码逻辑,对我们做其它延伸类题目很有帮助。基础深搜伪代码public void dfs(Tree node){ //递归退出条件 if(node == null){ return; } //递归遍历分支节点 dfs(node.left); dfs(node.right);}基础宽搜伪代码pulic bfs(Tr原创 2020-12-17 16:59:39 · 225 阅读 · 0 评论 -
哈希表和字符串
哈希表和字符串经典算法算法准备数据结构复习HashTable线程安全,操作函数使用synchronized关键字修饰,保证线程安全;初始默认容量 11,拓展因子 0.75;最大值,为Integer.MAX_VALUE - 8;扩容为oldsize<<1 +1;根据key获取index的方式是:(hash&0x7FFFFFFF)%tab.length;put(key,value),value不允许为空,key也不允许(key.hashcode会抛出异常);为什么key原创 2020-12-07 16:17:42 · 316 阅读 · 0 评论 -
二分查找和二叉排序树
二分查找和二叉排序树预备知识1 二分查找算法前提: 要有顺序逻辑(默认升序):将中间位置的关键字与查询关键字比较:如果两者相等,则查找成功。否则利用中间位置将表分成前、后两个子表:如果中间位置的的关键字大于查找关键字,则进一步查找前一子表否则进一步查找后一字表重复以上过程,直到找到满足条件的记录,则查询成功,或这直到子表不存在为止,此时查找不成功。//递归public static boolean binary_search(int[] val,int begin,int原创 2020-11-27 15:57:31 · 2011 阅读 · 0 评论 -
图
图1 定义图是由n个顶点和x条边组成的图像。List<List<Integer>> nodeAndEdges = new ArrayList<List<Integer>>();java 可以用嵌套list来表述,外层list的序号表示顶点,它关联的内存list表示到其它顶点的边;eg: <0,<1,2,3>>顶点0,和顶点1、2、3相链接。ps:这里图的表示方法采用的邻接表,还存在邻接矩阵、星型图。2 遍历方式2.1原创 2020-11-16 17:15:18 · 98 阅读 · 0 评论 -
二叉树
二叉树算法总结二叉树的遍历方式 ##基础数据结构 class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val){ this.val = val; this.left = null; this.right = null; } publ原创 2020-11-16 15:47:34 · 120 阅读 · 0 评论