
数据结构
培金
目前从事android软件开发工作。承接android应用开发。合作请邮件:lingbjecit@163.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hash算法技术总结<附语音链接>
散列数据结构的总结原创 2022-04-23 12:11:33 · 222 阅读 · 0 评论 -
TreepMap --之红黑树探索
前言 红黑树的特点有下面几条: 它首先是一颗二叉树,近似平衡。 节点的颜色红色或者黑色。 根节点&叶子节点都是黑色。 红色节点的子节点必须是黑色。 叶子节点为空。 从一个节点到它的子节点上有相同数目的黑色节点。 TreeMap中插入元素流程 红黑树调整 ...原创 2019-05-29 17:14:11 · 339 阅读 · 0 评论 -
Leetcode 107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 解法代码 /** * Definition...原创 2019-04-24 20:07:27 · 136 阅读 · 0 评论 -
Leetcode 617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 Tree 2 1...原创 2019-04-09 17:46:31 · 130 阅读 · 0 评论 -
多线程并发demo代码
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.atomic.AtomicInteger; public class MultiThread { //使用原子整数,对数的自增是线程安...原创 2019-04-09 16:44:23 · 337 阅读 · 0 评论 -
二叉查找平衡树---再平衡旋转
public class AvlTree { public AvlTree() { } public static class AvlNode { int val; AvlNode left; AvlNode right; int height; AvlNode(int e) { val = e; } AvlNode(int e, AvlNode ...原创 2019-04-03 15:45:38 · 200 阅读 · 0 评论 -
Android Handler post( runnable r) 后发生了什么?
Handler 调用MessageQueue 将Runnable对象封装到Message中。 public final boolean post(Runnable r) { return sendMessageDelayed(getPostMessage(r), 0); } 将延迟时间统一到未来时间点 public final boolea...原创 2019-04-15 17:15:45 · 183 阅读 · 0 评论 -
Leetcode 1012. 十进制整数的反码
题目 每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。 二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的二进制反码为 “010”。 给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。 示例 1: 输入:5 输...原创 2019-03-23 13:27:25 · 437 阅读 · 0 评论 -
Leetcode 118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 解题 1.首先,们知道必须要一个numRows的循环。其次是内层循环。本题的时间复杂度O(n^2)。空间复杂度亦同。 ...原创 2019-03-18 18:16:00 · 247 阅读 · 0 评论 -
汉明重量
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:0000000000000000000000001000000...原创 2019-11-04 09:48:55 · 730 阅读 · 0 评论 -
补码知识
在计算机二进制系统中,正数&负数的区别在最高位,最高位0表示正数,为1表示负数。 计算机做加减乘除运算时,最终是转化为加法运算。 比如 3-8 = 3+(-8); 正数的补码是本身。 负数的补码是将其对应的正数位按位取反再加1. -8:0001000->1110111->1111000->11111000 3-8:11111000+00000011->1111101...原创 2019-03-21 10:37:16 · 845 阅读 · 0 评论 -
Leetcode 204. 计数质数
题目 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 解法&思路 题目内容很简单,但是里面要掌握的知识点非常多。最优解法非常的巧妙。 何谓质数。一个数除了1和它本身能够整除它,其它数都不能够整除它。这个可以肯定,大于它的数更加不能整除它。那么我们可以据 何谓整除;假设2个正整数M...原创 2019-03-20 17:58:31 · 299 阅读 · 0 评论 -
Leetcode 112. 路径总和
题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2019-03-15 19:27:55 · 227 阅读 · 0 评论 -
关于CopyOnWriteArrayList的技术理解
前言 项目源代码中使用了CopyOnWriteArrayList类,出于好奇就研究它,看它里面有那些优点,作者设计基于什么考虑,能带来那些好处。 原注释如下 /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({@code add}, {@code...原创 2018-08-01 15:46:21 · 432 阅读 · 0 评论 -
插入排序回顾
前言 最近学习了排序算法,参考书籍《数据结构与算法分析-java版本》。总结一下,刷一下存在感,另外提高在csdn上的排名。 含义理解 本篇博客讲述“插入排序”,什么叫做“插入”呢?怎样解释,才能契合插入排序的实际真谛。我想,别人插你队的时候,应该更合适,所以“插入”等同与“插队”更合适。 实例讲解 假设有下面的一个数组: {23,2,4,6,90,0,56} 23在第一个位...原创 2018-05-04 12:29:20 · 193 阅读 · 0 评论 -
数据结构--散列总结
前言 最近学习数据结构,参考数据是《数据结构与算法分析》。现在总结自己的知识点 散列 散列也叫做哈希,根据英语单词hash英译过来。散列相对于数组而言,数据项存储在空间中的位置是根据散列码来决定,而数组则是根据数据项的顺序对应到内存空间。散列解决数组删除、访问、查询需要大量时间的问题,而散列则是固定时间,每次对数据项的获取,删除都通过哈希码来获取对应数据项。 散列函数 在现有的Java原创 2018-01-18 18:04:35 · 681 阅读 · 0 评论