- 博客(8)
- 资源 (4)
- 收藏
- 关注
原创 二叉排序树常用算法
二叉排序树:左子树的节点算法一:判断是否是二叉排序树,见Validate Binary Search Tree算法二:将有序数组转化为BSTConvert Sorted Array to Binary Search Tree算法三,插入节点,用递归的方法,伪代码public void insertBST(BSTNode root,int x){ if(root==
2014-03-31 13:06:26 733
原创 Valid Parentheses
题目的意思一开始没看明白,以为括号是有优先级的,想的太复杂了,输入的字符串只包含括号。最内层的括号必须是相邻的,类似{ ( [ ] ) }也是有效的。用栈来实现。如果字符串长度为奇数,肯定不是有效的。遍历字符串,如果遇到前半部分括号,则把后半部分的括号入栈。下一次遍历时,如果不是前半部分括号,即是后半部分,那么就得要判断与前一个字符是否匹配,判断栈是否为空,不为空,把该字符
2014-03-30 13:28:22 409
原创 传输层协议:TCP和UDP
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urge
2014-03-28 14:18:13 971
原创 Rotate Image
将一个正方形的图像顺时针旋转90度。经过旋转后,A[i][j]=A[j][n-i];n是正方形边长-1。在旋转的过程中,其实就是四个值的依次替换:A[i][j]----->A[j][n-i]----->A[n-i][n-j]----->A[n-j][i]----->A[i][j]。如下图所示,四个黄色圆圈按照顺时针相互替换在遍历时,只需要遍历矩阵的1/4就可以了。矩阵在划分
2014-03-25 13:30:16 528
原创 Linked List Cycle II
I只是判断,II则要找到这个环的开始的节点。还是用slow与fast指针,slow走一步,fast走两步,首先判断是否存在环。如果存在环,设两个指针第一次在途中A点相遇,B点是环开始的节点,环是按逆时针走的。第一次相遇时:slow走的路程S=x+yfast走的路程F=x+y+z+yF=2S(速度与路程成正比)得到x=z所以第一次相遇后,让慢指针回到head,
2014-03-23 10:53:59 407
原创 Sort Colors
最简单的暴力解法,先统计各个颜色的次数,再遍历一次赋值,复杂度O(N)public void sortColors(int[] A) { int red = 0,white=0,blue=0; int length = A.length; for(int p = 0; p < length; p++){ if(A[p] =
2014-03-09 11:50:18 458
原创 Swap Nodes in Pairs
对单链表操作,任意一对数交换位置,如果最后只剩下一个数,则不需要交换思路:设置三个指针:pre,p,next进行操作循环条件是:p != null && p.next != null程序示意图如下所示:public ListNode swapPairs(ListNode head) { if(head == null || head.next == null
2014-03-07 16:31:05 473
原创 Leetcode中的组合排列问题:Permutations,Combinations,Letter Combinations of a Phone Number
组合问题。用递归的方法,先固定一个数,把剩下的数继续组合。代码有些难以理解,还需要斟酌。。。。public ArrayList> permute(int[] num) { ArrayList> lists = new ArrayList>(); ArrayList list = new ArrayList(); generatePermuta
2014-03-06 15:48:45 772
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人