JAVA编码
kakabest123
这个作者很懒,什么都没留下…
展开
-
java7动态类型支持
JDK 7与动态类型现在,我们回到本专栏的主题,来看看Java语言、虚拟机与动态类型语言之间有什么关系。Java虚拟机毫无疑问是Java语言的运行平台,但它的使命并不仅限于此,早在1997年出版的《Java虚拟机规范》第一版中就规划了这样一个愿景:“在未来,我们会对Java虚拟机进行适当的扩展,以便更好的支持其他语言运行于Java虚拟机之上”。而目前确实已经有许多动态类型语言运行于Java原创 2015-07-20 22:48:45 · 322 阅读 · 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 23:39:37 · 248 阅读 · 0 评论 -
二叉树中序遍历
中序遍历二叉树: 遍历顺序:左,根,右 首先遍历左子树,直到遇到第一个没有左子树的节点,输出,然后遍历右子树。递归算法比较简单,和先序遍历差别不大。public static List<Integer> inorderTraversal(TreeNode root) { if(root == null) return Collections.EMPTY_LIST;原创 2015-08-16 22:52:56 · 455 阅读 · 0 评论 -
单链表逆序--非递归算法
初始状态: prev = null; head = head; next = head.next;//保证不断链 开始逆序: head.next = prev;//不会断链,next保持在链上(最后一个节点指向null) prev = head; head = next;原创 2015-07-24 15:48:58 · 528 阅读 · 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 20:55:20 · 425 阅读 · 0 评论 -
二叉树遍历实现:递归和非递归
上一个求二叉树公共祖先节点的题用到了后序遍历,临时想起来就总结一下,常见的二叉树遍历方式吧,主要有,先序遍历,中序遍历、后序遍历和层序遍历,每种遍历方式的实现主要有两种:递归和非递归。其中,非递归算法主要用到了栈和队列(层序遍历)代码如下,忘了的时候可以看看。import java.util.LinkedList;public class BinaryTree { //根节点 pr原创 2015-08-15 23:51:14 · 210 阅读 · 0 评论 -
先序遍历二叉树
递归方式先序遍历二叉树: 遍历顺序:根,左,右public static List<Integer> preorderTraversal(TreeNode root) { if(root == null) return Collections.EMPTY_LIST; List<Integer> list = new ArrayList<Int原创 2015-08-16 22:30:50 · 268 阅读 · 0 评论 -
单链表逆序--递归算法
非递归的单链表逆序比较简单,只需要注意三个问题: 1、保存从单链表上拆下的节点; 2、保存当前在链表上的节点,保证不断链; 3、判断循环结束条件。而基于递归的单链表逆序算法,需要注意两个问题:拆和装 因为本质上递归过程是一个逐层深入、逆序返回的过程,因此,只需要考虑两个条件,即逐层深入时候需要做什么操作和返回过程中需要做什原创 2015-07-24 16:26:15 · 1589 阅读 · 0 评论 -
判断有环的链表相交和第一个公共节点(全面)
最常见的解法: 单链表有公共节点,则必定是Y状而不是X状的。 遍历得到两个链表的长度,长链表长度m,短链表长度n,则长链表先走m-n步,然后两个链表同时逐步遍历,比较是否有相同节点。第二种方法: 将一个链表的表尾指向另一个链表的表头,如果两个链表相交,则会形成环,否则没有环,因此转换成判断是否有环,即通过快指针和慢指针,判断快慢指针是否相等判断是原创 2015-07-24 17:06:46 · 517 阅读 · 0 评论 -
后序遍历二叉树
递归方法和之前的几乎一致,不再赘述。考虑非递归方法: 后序遍历顺序是:左,右,根 即左孩子和右孩子都遍历输出了之后,才遍历子树的根节点。public ArrayList<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> lst = new ArrayList<Integer>();原创 2015-08-16 23:22:08 · 291 阅读 · 0 评论 -
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 21:43:53 · 256 阅读 · 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 17:16:51 · 204 阅读 · 0 评论 -
匿名内部类总结和例子
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法12345678910111213原创 2015-07-20 17:07:18 · 286 阅读 · 0 评论 -
一个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 00:10:06 · 1609 阅读 · 0 评论 -
Java引用和C指针的区别
①引用是值为地址的数据元素,而指针是一个装地址的变量;②引用是有类型的,其类型转换可能不成功,指针只是一个地址;③引用的初始值是null,指针的初始值不一定;④引用不能直接计算,指针可以计算跳转;⑤引用不用主动回收,指针需要主动回收。原创 2015-08-14 10:50:59 · 421 阅读 · 0 评论 -
Java与C++的区别
①编译运行过程不同(解释执行 + 跨平台)②面向对象(无全局变量和函数)③封装指针为引用类型(安全、需要考虑类型、跳转、初始值等)④不支持多继承(单继承 + 实现多接口)⑤内存管理(自动回收 v.s 析构函数)⑥没有运算符重载、平台无关性原创 2015-08-14 10:55:03 · 211 阅读 · 0 评论 -
Java 字符串移位
实现功能:实现字符串的移位操作详述: 例如,“abcdefgh”循环右移5位得到“defghabc”方法一:按位右移(空间复杂度O(1); 时间复杂度O(n*n)) 移动1位:habcdefg 移动2位:ghabcdef 移动3位:fghabcde 移动4位:efghabcd 移动5位:defghabc方法二:按移动位置切片(空间复杂度O(n);时间复杂度O(n)) “abcdefgh”原创 2015-07-22 16:18:47 · 960 阅读 · 0 评论 -
HashMap实现原理
面试的时候经常遇到会问某种Java集合的实现原理,觉得其中最长问到的应该是HashMap,所以详细学习一下。HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模原创 2015-08-14 17:21:45 · 208 阅读 · 0 评论 -
LeetCode: Spiral Matrix螺旋矩阵
基本思路: (1)模拟遍历过程 ①从左往右matrix[rowstart][i] ②从上往下matrix[i][colend] ③从右往左matrix[rowend][i] ④从下往上matrix[i][colstart] (2)判断结束条件; (3)记得输入合法性判原创 2015-08-14 21:14:06 · 327 阅读 · 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 22:37:29 · 243 阅读 · 0 评论 -
用两个栈实现一个队列
常规解法:两个栈A和B,模拟队列,入队、出队操作 入队时,将元素压入A, 出队时,将A中元素逐个弹出并压入B,将B的栈顶元素弹出作为出队元素,之后将B中剩下的元素逐个弹出并压入A。一种小改进:入队时,先判断A是否为空,如果不为空,说明元素都在A,此时将入队元素直接进栈到A;如果为空,将B中元素弹出并进栈到A,然后在压入元素; 出队时,先判断B是否为空,如果不为空,直接弹出B栈栈顶元素;如果为空原创 2015-08-17 21:41:08 · 270 阅读 · 0 评论