摘要:
问题描述:s型遍历二叉树,或者反s型遍历二叉树 算法分析:层序遍历二叉树只需要一个队列,因为每一层都是从左往右遍历,而s型遍历二叉树就要用两个栈了,因为每次方向相反。 阅读全文
摘要:
线程通信有三种方法:一是利用Obeject的wait,notify,notifyAll。二是利用condition配合lock。三是利用BlockingQueue接口,put方法,take方法。 方法一: 方法二:由于Clock没有隐式的同步监视器,所有要借助Condition 方法三: 阅读全文
摘要:
方法一,同步代码块。方法二,同步方法。方法三,同步lock 同步代码块,synchronized在线程的run方法里。同步监视器是Account类。 同步方法,synchronized在主类里。同步监视器是调用这个方法的类,即this 同步锁使用Lock对象作为同步监视器,在finally里解锁 阅读全文
摘要:
//子程序循环10次,接着主程序循环100次,然后子程序又循环10次,主程序循环100次,这样循环50次。 public class ThreadTest { public static void main(String[] args) { MyThread mythread = new MyThread(); new Thread(new Runnable()//传递给Thre... 阅读全文
摘要:
MissingNumber问题描述:给定一个数组,数组数字范围是0-n,找到缺失的数字。例如nums={0,1,3},return2。 算法分析:第一种方法,对数组进行排序,然后找到和下标不一致的数字,下标即为缺失的数字。第二种方法,对于这样的数组,如果没有缺失数字,即使没有排序,下标-数字的差相加 阅读全文
摘要:
Combination问题描述:给定n和k,找出1-n之间所有k个数的组合,例如:n=3,k=2,返回 [[1,2] [1,3] [2,3]] 算法分析:利用递归。递归边界就是curr.size()==k。 CombinationSum问题描述:给一组数字和target,这组数字没有重复元素,找出这 阅读全文
摘要:
问题描述:n=1,返回“1”;n=2,返回“11”;n=3,返回“21”;n=4,返回1211,。。。。 算法分析:和斐波那契数列道理差不多,都是后一个要依赖前一个元素。因此可以使用递归,也可以使用迭代。 递归算法: 迭代算法: 阅读全文
摘要:
问题描述:填充数独表中空元素。空元素为'.' 算法分析:没填充一个数,都要看这个数所在的行,列,小矩阵是否合法。然后还要看整个数独表是否正确,而判断整个数独表只能通过递归,因为前一个结果的判断要依赖后一个结果。这应该属于动态规划问题。要递归回溯。 阅读全文
摘要:
问题描述:给定9x9矩阵,看是是否是有效数独,不用全部都填上数字,可以为. 算法分析:这道题就是判断,不难,有效数独三个充分条件,行,列,3*3子矩阵,都要满足数字不能重复。 还有一种方法,就是直接用set集合,判断元素是否重复。 阅读全文
摘要:
问题描述:给定一个有序序列,如果找到target,返回下标,如果找不到,返回插入位置。 算法分析:依旧利用二分查找算法。 阅读全文