数据结构
培金
目前从事android软件开发工作。承接android应用开发。合作请邮件:lingbjecit@163.com
展开
-
Hash算法技术总结<附语音链接>
散列数据结构的总结原创 2022-04-23 12:11:33 · 182 阅读 · 0 评论 -
TreepMap --之红黑树探索
前言红黑树的特点有下面几条:它首先是一颗二叉树,近似平衡。节点的颜色红色或者黑色。根节点&叶子节点都是黑色。红色节点的子节点必须是黑色。叶子节点为空。从一个节点到它的子节点上有相同数目的黑色节点。TreeMap中插入元素流程红黑树调整...原创 2019-05-29 17:14:11 · 319 阅读 · 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 · 118 阅读 · 0 评论 -
Leetcode 617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1...原创 2019-04-09 17:46:31 · 105 阅读 · 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 · 309 阅读 · 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 · 177 阅读 · 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 · 158 阅读 · 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 · 398 阅读 · 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 · 225 阅读 · 0 评论 -
汉明重量
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:0000000000000000000000001000000...原创 2019-11-04 09:48:55 · 693 阅读 · 0 评论 -
补码知识
在计算机二进制系统中,正数&负数的区别在最高位,最高位0表示正数,为1表示负数。计算机做加减乘除运算时,最终是转化为加法运算。比如 3-8 = 3+(-8);正数的补码是本身。负数的补码是将其对应的正数位按位取反再加1.-8:0001000->1110111->1111000->111110003-8:11111000+00000011->1111101...原创 2019-03-21 10:37:16 · 728 阅读 · 0 评论 -
Leetcode 204. 计数质数
题目统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法&思路题目内容很简单,但是里面要掌握的知识点非常多。最优解法非常的巧妙。何谓质数。一个数除了1和它本身能够整除它,其它数都不能够整除它。这个可以肯定,大于它的数更加不能整除它。那么我们可以据何谓整除;假设2个正整数M...原创 2019-03-20 17:58:31 · 222 阅读 · 0 评论 -
Leetcode 112. 路径总和
题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2019-03-15 19:27:55 · 200 阅读 · 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 · 407 阅读 · 0 评论 -
插入排序回顾
前言最近学习了排序算法,参考书籍《数据结构与算法分析-java版本》。总结一下,刷一下存在感,另外提高在csdn上的排名。含义理解本篇博客讲述“插入排序”,什么叫做“插入”呢?怎样解释,才能契合插入排序的实际真谛。我想,别人插你队的时候,应该更合适,所以“插入”等同与“插队”更合适。实例讲解假设有下面的一个数组:{23,2,4,6,90,0,56}23在第一个位...原创 2018-05-04 12:29:20 · 177 阅读 · 0 评论 -
数据结构--散列总结
前言最近学习数据结构,参考数据是《数据结构与算法分析》。现在总结自己的知识点散列散列也叫做哈希,根据英语单词hash英译过来。散列相对于数组而言,数据项存储在空间中的位置是根据散列码来决定,而数组则是根据数据项的顺序对应到内存空间。散列解决数组删除、访问、查询需要大量时间的问题,而散列则是固定时间,每次对数据项的获取,删除都通过哈希码来获取对应数据项。散列函数在现有的Java原创 2018-01-18 18:04:35 · 625 阅读 · 0 评论