自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

罗布泊coding

学习,生活,工作的足迹

  • 博客(27)
  • 资源 (4)
  • 收藏
  • 关注

原创 Pascal's Triangle II

帕斯卡三角:11  11  2  11  3   3   11  4   6    4    1。。。。要求只允许O(k)空间每增加一层ArrayList就增加一个1在每一层,从第二个数开始修改,直至修改到倒数第二个数,在修改之前要把原来的值保存,以备下次相加public ArrayList getRow(int rowIndex) { Ar

2014-01-27 13:21:22 400

原创 Remove Duplicates from Sorted Array II

与Remove Duplicates from Sorted Array不同的是:如果len遍历数组的过程中,删除数的条件是连续三个数相等,删除最后一个数,并且前移后面的数;如果不符合这个条件,才继续向前遍历,否则继续比较。public int removeDuplicates(int[] A) { int len = A.length; if(le

2014-01-26 21:07:52 376

原创 Convert Sorted Array to Binary Search Tree

把一个有序序列转化为平衡二叉排序树用递归,类似二分构建,找到middle,作为根节点public TreeNode sortedArrayToBST(int[] num) { int len = num.length; TreeNode root = build(num,0,len-1); return root; }

2014-01-26 20:27:55 442

原创 Populating Next Right Pointers in Each Node和 II

二叉树层次遍历的变种用辅助队列,一层一层地遍历每一层的元素,先出队的元素的next是后一个出队的元素每一层最后一个元素的next=nullpublic void connect(TreeLinkNode root) { Queue Q = new ArrayDeque(); if(root == null)return; Q.offer(

2014-01-26 19:51:15 503

原创 Plus One

思路:1.如果最后一位小于9,则digits[length-1]++,返回2.如果最后一位大于8,则循环访问数组,直至某位数3.如果最后得到的进位>0,则需要将数组长度扩大1,原来的数组往后平移public int[] plusOne(int[] digits) { int length = digits.length; int add = 0,i

2014-01-26 15:57:11 468

原创 Search a 2D Matrix

典型的二分法查找,注意循环条件是lowpublic boolean searchMatrix(int[][] matrix, int target) { int row = matrix.length; if(row == 0)return false; int column = matrix[0].length; int cou

2014-01-24 19:49:41 420

原创 Binary Tree Level Order Traversal II

在层次遍历的基础上,反转ArrayList>就可以了public ArrayList> levelOrderBottom(TreeNode root) { ArrayList> lists = new ArrayList>(); if(root == null)return lists; Queue Q = new ArrayDeque(

2014-01-23 16:38:04 462

原创 Java容器类常用方法总结

1.容器遍历最常用的是Iterator,用foreach简写ArrayList> lists = new ArrayList>();遍历它为:for(ArrayList it: lists){for(Integer iti :it){System.out.print(iti+" ");}System.out.println();}2.栈的初始化,出栈,入

2014-01-23 16:15:47 833

原创 股票交易类算法

求一组数中最大差问题(只能是后面的数减前面的数)暴力n2,显然不行可以转化一下思路,求出两两相邻数的差,求一系列差值的最大连续子序列和,问题就转化为Maximum Subarray问题注意两点:收益不能为负,所以如果求出来的值小于0,输出0如果给出的数组只有一个数,也输出0public int maxProfit(int[] price

2014-01-23 12:27:31 834 1

原创 Longest Substring Without Repeating Characters

定义两个数组,一个boolean[],记录是否出现过这个字符,一个int[],记录该字符上一次出现的位置,数组下标是字符的ASCII码设置一个begin指针,每次遇到相同字符时,begin重新置为i;特别注意,遇到相同字符时,就要重新计算长度,所以从上一次begin到这个字符上一次出现的位置,这之间的字符布尔数组应该设置为falsepublic int lengthOfLongestS

2014-01-19 20:37:52 456

原创 Climbing Stairs

经典dp问题 设置一个数组dp[i]表示i层楼梯有多少种方法dp[1]=1;dp[2]=2;dp[i]=dp[i-1]+dp[i-2];i层楼梯最后时,要么走一步,要么走两步,所以有上面的等式最后返回dp[n]public int climbStairs(int n) {        if(n == 0 || n==1)return n;        int

2014-01-19 16:22:53 407

原创 Remove Duplicates from Sorted List

遍历list,如果遇到相等的数,就删除那个节点,否则指针前移public ListNode deleteDuplicates(ListNode head) { ListNode p = head; while(p != null && p.next!= null){ if(p.val == p.next.val)p.next=p.nex

2014-01-19 16:06:27 427

原创 Length of Last Word

很简单,按“ ”分割就可以了,Java中有s.split()函数public int lengthOfLastWord(String s) { String[] strArray = s.split(" "); if(strArray.length == 0)return 0; return strArray[strArray.length-1]

2014-01-19 15:47:38 455

原创 面试题17:合并两个有序链表(Leetcode-21:Merge Two Sorted Lists)

思路与合并两个有序数组是一样的,重新建立一个node l3,同时遍历l1和l2,比较小的数就插入到l3的表尾,然后小的数指针后移。不同的是,在遍历之前,得要先建立l3的头结点,也就是比较l1和l2的头结点数值大小,小的数作为l3的头结点。public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode

2014-01-19 15:34:51 634

原创 面试题31:连续子数组的最大和(Leetcode-53:Maximum Subarray)

经典DP问题,用max变量存储先前得到的子数组的和注意四点:1. 每次循环 sum += A[i]2. 如果sum>max ,则将max置为sum3. 如果sum因为如果sum4.max的初始值必须是int型的最小值,也就是Integer.MIN_VALUE,因为需要和sum比较 public int maxSubArray(int[] A) { int l

2014-01-19 12:07:02 547

原创 面试题2:实现单例模式

单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口根据以上特点,实现单例模式的方法是:(1)私有构造函数(private)(2)私有静态成员变量(private,static)(3)公有静态函数(public,static getInstance())两种形式:饿汉式单例类,懒汉式单例类懒汉...

2014-01-18 19:38:58 642

原创 Search Insert Position

就是一个二分查找的问题public int searchInsert(int[] A, int target) { int high = A.length-1; int low = 0,middle=0; while(low <= high){ int midindex = (low+high)/2;

2014-01-18 17:34:06 453

原创 Best Time to Buy and Sell Stock II

就是求所有上升期差价的总和犯了很低级的错误,i++与i+1,i++会改变i的值,所以在数组下标中不能用i++!!!public int maxProfit(int[] prices) { int length = prices.length; int ret = 0; for(int i = 0;i<length-1;i++){

2014-01-18 15:23:49 532

原创 Single Number

一组数中,只有一个数出现一次,其他数都出现了2次,找到这个数方法一:用map,key是这个数,value用作统计这个数出现的次数遍历map的key,输出value=1的那个keypublic int singleNumber(int[] A) { int length = A.length; Map map = new HashMap(); for(

2014-01-18 13:54:10 452

原创 Same Tree

思路:分类讨论,递归public boolean isSameTree(TreeNode p, TreeNode q) { return isSameTreeUtil(p,q); } boolean isSameTreeUtil(TreeNode p, TreeNode q){ if(p==null && q==null){

2014-01-17 17:32:39 420

原创 观察者模式

案例:观察者Observer对被观察者Observered进行监控,一旦被观察者发生变化,观察者发出提示1.写观察者接口和类,一个接口IObserver和实现这个接口的Observer的类。接口有一个方法:doSth(),表明观察者发现被观察者发生变化时,就发出提示public interface IObserver { public void doSth();}public c

2014-01-17 16:52:58 564

原创 代理模式及Java动态代理

以老板和秘书之间的代理关系,处理事务,秘书作为老板的代理人,可以接电话。1.首先写一个Handle接口,接口里有一个方法:接电话public interface Handle { public void answerPhone(); }2.分别创建两个类:老板类和秘书类,都实现了Handle接口2.1老板类重写了接电话的方法public class Boss implement

2014-01-17 16:41:10 600

原创 面试题16:单链表逆置

思路如下图所示:代码:Node reverse(Node head){ if(null == head || null == head.next ){//如果链表为空或只有一个元素 return head; } Node p = head.next; head.next = null;//原来的头节点成了表尾 Node temp = null; whi

2014-01-16 23:04:22 584

原创 Word Break

For example, givens = "leetcode",dict = ["leet", "code"].Return true because "leetcode" can be segmented as "leet code".第一种解法:递归。结果超时!!!public boolean wordBreak(String s, Set dic

2014-01-14 18:28:00 409

原创 Java实现单链表

首先定义一个节点类,有两个成员变量:val和next,以及一个构造函数:/* * 单链表非数组实现 */public class ListNode { ListNode next; int val; ListNode(int val){ this.val = val; this.next = null; }}单链表最常用的两个方法就是插入和删除:public s

2014-01-13 14:32:20 590

原创 ZigZag Conversion 锯齿形转换字符串

思路:根据锯齿形状,可以得到结论第i行的字符下标之间的距离是(nRows-1-i)*2和2*i,如下图所示:0            61      5    72   4       83             9根据这个规律,遍历每一行的元素,得到转换后的字符串。注意两点:1. 当s.length 时,无需转换,直接返回,否则会超时。2. 在遍历每一行时,

2014-01-11 15:56:29 895

原创 判断链表是否有环以及寻找环入口

思路:采用“快慢指针”查检查链表是否含有环。让一个指针一次走一步,另一个一次走两步,如果链表中含有环,快的指针会再次和慢的指针相遇。这里需要注意的一点是算法中循环的条件,这是一个很容易被忽略的细节。1)因为fast指针比slow指针走得快,所以只要判断fast指针是否为空就好。由于fast指针一次走两步(走得太快了,就容易跌倒!),fast.next可能已经为空(当fast为尾

2014-01-11 14:58:30 494

Ubuntu10.04下安装ns-allinone-2.35

Ubuntu10.04下安装ns-allinone-2.35

2013-12-05

整理好的日期控件

js日期控件,经过整理,有些支持所有浏览器,有些支持部分浏览器

2013-02-28

Jfreechart各种图的源代码

Jfreechart各种图的源代码,包括柱状图,饼图,折线图,时序图等等,很全

2012-11-28

百度面试题集锦

整理的百度面试题,很好很强大的东西,可以自己下载来做做看,对找工作有帮助

2012-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除