kakabest123
码龄15年
关注
提问 私信
  • 博客:21,520
    21,520
    总访问量
  • 28
    原创
  • 1,826,966
    排名
  • 3
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2010-04-08
查看详细资料
个人成就
  • 获得8次点赞
  • 内容获得0次评论
  • 获得46次收藏
创作历程
  • 30篇
    2015年
成就勋章
TA的专栏
  • 数据库
    3篇
  • JAVA编码
    21篇
  • C语言
    3篇
  • 结构体
    1篇
  • 类
    1篇
  • 软件技术
    1篇
  • 算法
    5篇
  • 网络开发
  • 需求分析
    1篇
  • 软件设计
    1篇
  • Java语言
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

182人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

用两个栈实现一个队列

常规解法:两个栈A和B,模拟队列,入队、出队操作 入队时,将元素压入A, 出队时,将A中元素逐个弹出并压入B,将B的栈顶元素弹出作为出队元素,之后将B中剩下的元素逐个弹出并压入A。一种小改进:入队时,先判断A是否为空,如果不为空,说明元素都在A,此时将入队元素直接进栈到A;如果为空,将B中元素弹出并进栈到A,然后在压入元素; 出队时,先判断B是否为空,如果不为空,直接弹出B栈栈顶元素;如果为空
原创
发布博客 2015.08.17 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后序遍历二叉树

递归方法和之前的几乎一致,不再赘述。考虑非递归方法: 后序遍历顺序是:左,右,根 即左孩子和右孩子都遍历输出了之后,才遍历子树的根节点。public ArrayList<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> lst = new ArrayList<Integer>();
原创
发布博客 2015.08.16 ·
292 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉树中序遍历

中序遍历二叉树: 遍历顺序:左,根,右 首先遍历左子树,直到遇到第一个没有左子树的节点,输出,然后遍历右子树。递归算法比较简单,和先序遍历差别不大。public static List<Integer> inorderTraversal(TreeNode root) { if(root == null) return Collections.EMPTY_LIST;
原创
发布博客 2015.08.16 ·
463 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

先序遍历二叉树

递归方式先序遍历二叉树: 遍历顺序:根,左,右public static List<Integer> preorderTraversal(TreeNode root) { if(root == null) return Collections.EMPTY_LIST; List<Integer> list = new ArrayList<Int
原创
发布博客 2015.08.16 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode:Add Digits

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, r
原创
发布博客 2015.08.16 ·
427 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

二叉树遍历实现:递归和非递归

上一个求二叉树公共祖先节点的题用到了后序遍历,临时想起来就总结一下,常见的二叉树遍历方式吧,主要有,先序遍历,中序遍历、后序遍历和层序遍历,每种遍历方式的实现主要有两种:递归和非递归。其中,非递归算法主要用到了栈和队列(层序遍历)代码如下,忘了的时候可以看看。import java.util.LinkedList;public class BinaryTree { //根节点 pr
原创
发布博客 2015.08.15 ·
211 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode:Lowest Common Ancestor of a Binary Tree

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v a
原创
发布博客 2015.08.15 ·
249 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode:Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11’ has binary representation 0000000000000
原创
发布博客 2015.08.15 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode:Single Number

Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memo
原创
发布博客 2015.08.14 ·
244 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

LeetCode:Maximun Depth of Binary Tree二叉树深度

主要思路: (1)深度优先搜索DFS; (2)递归需要考虑的问题(递归结束条件,递归返回值) (3)算法简单,性能一般。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode rig
原创
发布博客 2015.08.14 ·
257 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode: Spiral Matrix螺旋矩阵

基本思路: (1)模拟遍历过程 ①从左往右matrix[rowstart][i] ②从上往下matrix[i][colend] ③从右往左matrix[rowend][i] ④从下往上matrix[i][colstart] (2)判断结束条件; (3)记得输入合法性判
原创
发布博客 2015.08.14 ·
332 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HashMap实现原理

面试的时候经常遇到会问某种Java集合的实现原理,觉得其中最长问到的应该是HashMap,所以详细学习一下。HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模
原创
发布博客 2015.08.14 ·
211 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java与C++的区别

①编译运行过程不同(解释执行 + 跨平台)②面向对象(无全局变量和函数)③封装指针为引用类型(安全、需要考虑类型、跳转、初始值等)④不支持多继承(单继承 + 实现多接口)⑤内存管理(自动回收 v.s 析构函数)⑥没有运算符重载、平台无关性
原创
发布博客 2015.08.14 ·
212 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java引用和C指针的区别

①引用是值为地址的数据元素,而指针是一个装地址的变量;②引用是有类型的,其类型转换可能不成功,指针只是一个地址;③引用的初始值是null,指针的初始值不一定;④引用不能直接计算,指针可以计算跳转;⑤引用不用主动回收,指针需要主动回收。
原创
发布博客 2015.08.14 ·
422 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

为什么使用序列化和反序列化

首先需要了解什么是序列化:一般程序运行时,产生对象,这些对象随着程序的停止而消失,但如果我们想把某些对象保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象,这种情况下就要用到对象的序列化。知道了序列化的作用,我们会想到,为什么要用序列化呢?一座大厦好比一个对象,你要把这座大厦搬到另一个地方去,你想直接挪肯定不行吧?(一般来说,
原创
发布博客 2015.08.01 ·
1440 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

一个01发生器,产生0和1不均匀,怎么设计使得它产生均匀的01序列

1.有一个随机数发生器,能以概率p生成0,以概率1-p生成1,问如何做一个随机数发生器 使得生成0和1的概率相等。 2.用上面那个生成0和1的概率相等的随机数发生器,怎样做一个随机数发生器使得它生成 的数在1…N之间均匀分布。 第一题比较简单,可以用原发生器周期性地产生2个数,直到生成01或者10。 由于生成01和10的概率均为p(1-p),故预先任意指定01为0(或1),10为1(
原创
发布博客 2015.07.26 ·
1615 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

判断有环的链表相交和第一个公共节点(全面)

最常见的解法: 单链表有公共节点,则必定是Y状而不是X状的。 遍历得到两个链表的长度,长链表长度m,短链表长度n,则长链表先走m-n步,然后两个链表同时逐步遍历,比较是否有相同节点。第二种方法: 将一个链表的表尾指向另一个链表的表头,如果两个链表相交,则会形成环,否则没有环,因此转换成判断是否有环,即通过快指针和慢指针,判断快慢指针是否相等判断是
原创
发布博客 2015.07.24 ·
519 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

单链表逆序--递归算法

非递归的单链表逆序比较简单,只需要注意三个问题: 1、保存从单链表上拆下的节点; 2、保存当前在链表上的节点,保证不断链; 3、判断循环结束条件。而基于递归的单链表逆序算法,需要注意两个问题:拆和装 因为本质上递归过程是一个逐层深入、逆序返回的过程,因此,只需要考虑两个条件,即逐层深入时候需要做什么操作和返回过程中需要做什
原创
发布博客 2015.07.24 ·
1600 阅读 ·
0 点赞 ·
0 评论 ·
10 收藏

单链表逆序--非递归算法

初始状态: prev = null; head = head; next = head.next;//保证不断链 开始逆序: head.next = prev;//不会断链,next保持在链上(最后一个节点指向null) prev = head; head = next;
原创
发布博客 2015.07.24 ·
533 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

UseCase中include和extend的区别

比较基础的东西,不过还是说明一下:UML用例图中include与extend的区别最近上论坛,看到在争论UseCase中include与extend的区别。其实这两者是很容易区分的。include是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分(就象提取公因式一样),例如UseCaseA中包括了a和b两个流程,而UseCaseC中包含了c和b两个流程。为了提高复
原创
发布博客 2015.07.24 ·
1346 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏
加载更多