- 博客(15)
- 收藏
- 关注
原创 leetcode 98 Validate Binary Search Tree java 算法
判断一棵树是不是查询二叉树。采用中序遍历的方法,查询二叉树中序遍历的结果为单调递增,这题的测试用例要求的是严格单调递增。此题与99题有些类似,设置pre指针指向前一个被访问的节点即可,判断前一个节点与当前节点是否满足顺序。代码如下:public class Solution { TreeNode pre = null; public boolean isValidBST
2016-08-11 22:25:52
626
翻译 leetcode99 Recover Binary Search Tree java 算法
这题的算法我是是参考网上现成的,但是有一点不太明白,pre和root两个点的顺序不对时,为什么要选择root为错误节点,而不是pre。自己看了别人的代码又敲了一遍。如下:public class Solution { TreeNode mistake1 = null,mistake2 = null; TreeNode pre = null; public void
2016-08-11 22:07:59
476
原创 leetcode129 Sum Root to Leaf Numbers java 算法
题目描述:计算从根节点到叶节点的路径构成的数字的和。算法描述:递归代码如下:public static int sumNumbers(TreeNode root) { if(root==null){ return 0; } List> result = new ArrayList>();//这两个list
2016-07-28 13:30:42
349
原创 leetcode134 Gas Station java 算法
题目描述:有n个汽油站围成一个圆,第i个汽油站有汽油gas[i],从第i个汽油站到第i+1个汽油站耗油cost[i],找到一个汽油站j。从j开始能够经过所有的汽油站并返回到j,返回j值,若不存在这样的j,则返回-1。算法描述:从0开始出发,若到某一个加油站时无法到达下一个加油站,则从下一个加油站开始为起点继续遍历,此题的思路与https://leetcode.com/problems/maxi
2016-07-27 14:30:34
584
原创 leetcode 147 Insertion Sort List java 算法
题目描述:利用插入排序对链表进行排序解体思路:修改原始链表的指针即可:代码如下:public static ListNode insertionSortList(ListNode head) { if(head==null || head.next==null) return head; //创建一个头指针,指向原链表的第一个节点
2016-07-22 17:50:49
316
原创 leetcode 150. Evaluate Reverse Polish Notation java 算法
题目描述:思路:将数字元素依次压入栈中,当遇到运算符时,出栈栈顶的两个元素做运算把结果压入到栈中,重复此过程,最后栈顶的那个元素即为结果。代码如下:public int evalRPN(String[] tokens) { Stack stack = new Stack(); List ls = new ArrayList();
2016-07-21 09:25:53
363
原创 leetcode 151 Reverse Words in a String java 算法
题目描述:将一段话逆序,但是单词本身不逆序。算法描述:本题需要考虑的情况比较多,主要考察考虑问题是否全面,下面是java的解法:public class Solution { public String reverseWords(String s) { if(s==null || s.length()==0){ return s;
2016-07-20 19:37:08
928
原创 EM算法的一些整理
今天把EM算法又重新看了一遍,于是决定对EM算法做一些整理,把EM算法的整个流程理清。对于一般的给定样本,我们可以用最大似然估计或者损失函数来求解模型的参数,此时的样本数据是完备的。但是对于某些样本数据可能由两个部分组成,一个是我们观测到的数据,还有一些是我们无法观测的数据,也就是隐变量,对于这类问题,一般的最大似然估计是无法求解的。于是便有了EM算法。我们来看一个具体的例子:假如说我
2016-07-19 21:27:55
1176
原创 leetcode 216 Combination Sum III java 算法
题目描述:给一个正整数n,将其分解为k个数的加和,找出所有的k个数的组合,并且这些组合相互唯一,例如1,2,3和3,2,1视为同一组算法思路:当选择添加这k个数中的第m个数时,则第m个数可取的最小值为min(n-前m-1个数的加和-(n-m)*9,第m-1个数的取值+1),然后用递归的方式求解即可:代码如下:public static List> combinationSum3
2016-07-15 16:09:29
495
原创 leetcode 240 Search a 2D Matrix II java 算法
题目描述:一个m*n的矩阵,矩阵的每行依次递增,矩阵的每列依次递增。给一个数,判断该数是否在该矩阵中。算法思路:首先判断(0,columnLen-1)处的元素,记为x,如果给定的target>x,则延列方向向下寻找,否则延行方向向左寻找。代码如下:public boolean searchMatrix(int[][] matrix, int target) {
2016-07-15 15:20:52
246
原创 leetcode 344 Reverse String
代码如下:public String reverseString(String s) { if(s==null){ return s; } return new StringBuilder(s).reverse().toString(); }
2016-07-13 20:36:52
207
原创 如何对学者按照其在领域内的权威性进行排序
最近读了几篇关于对学者排序的文章,这些文章大都用了学者的论文的发表的数量以及论文的被引用次数来计算学者的权威性。在某些研究领域或者研究主题中,比如如果我们想要了解关于该领域的一些比较权威性的或者靠谱的知识,往往会找一些比较权威的学者发表的论文来阅读。比如我们想找到最权威的k个专家,我们该如何判定这k个专家的权威性呢? 我们 很容易想到一些常用的对专家排序的方法,比如1、根据专家的发布论文的
2016-07-13 14:51:39
1336
原创 leetcode343 Integer Break java
题目描述:给一个正整数n,将n拆分为至少两个数的和,则n可以有多种拆分形式,每一种拆分方式得到的拆分的数相乘可以得到一个乘积,程序返回乘积最大的那个数:如n=10,则返回36算法思想:采用了动态规划的方法。代码如下:public static int integerBreak(int n){ if(n==0||n==1||n==2) re
2016-07-12 19:25:00
269
原创 leetcode 371 Sum of Two Integers java实现
题目描述:不用+和-实现两个数的加和算法思想:这里用到了位运算符,^运算符可以获得一位的加和,而进位可以用与运算符获得,然后将异或运算符获得值再和与运算符得到的进位左移一位求异或,直到进位为0,则求得结果即为加和的结果,代码如下:public int getSum(int a, int b) { while(b!=0){ int c =
2016-07-12 19:14:52
412
原创 leetcode 373 Find K Pairs with Smallest Sums java
题目描述:给两个数组A1,A2,数组为递增排序,以及一个整数k,从A1中选取一个整数a,从A2中选取一个整数b,构成组合(a,b),重复k次,选取的a+b的值逐渐递增,具体可参见下面两个例子:若nums1 = [1,7,11], nums2 = [2,4,6], k = 3两个数组产生的所有序列为:[1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],
2016-07-10 16:57:57
663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人