Leetcode
ZeroLhp
这个作者很懒,什么都没留下…
展开
-
LeetCode - UniquePaths
/** * 问:给出一个二维矩阵,从左上角到右下角一共有多少路径? * 解: * 1、默认条件:只能往下走或往右走。 * 2、f(i)(j) = f(i-1)(j) + f(i)(j-1) * 3、找到规律后,需要做的就是初始化,即i=0和j=0时对应的值。 */public class UniquePaths {public int uniquePaths(i原创 2016-05-29 08:22:26 · 348 阅读 · 0 评论 -
LeetCode - RemoveElement
/** * 问:给出一个数组,去除指定的某个元素,并返回新数组的长度。 * 解: * 1、返回长度很简单,只有出现一个Element,length--即可,难点是如何删除元素。 * 2、笨方法是再创建一个数组,存放不等于Element的元素。 * 3、有一个空间复杂度为O(0)的方法: * (1)遍历数组时,出现Element后与数组最后一个元素交换。 * (2)最关键原创 2016-05-29 08:24:50 · 260 阅读 · 0 评论 -
LeetCode - ClimbingStairs
/** * 问:有n阶的楼梯,每次可以走一步或者两步,那么走完n阶楼梯有多少种方式? * 解: * 1、由于每次只能走一步或两步,所以迈出最后一步前,必定在n-1阶或n-2阶,即f(n)=f(n-1)+f(n-2)。 * 2、也可以根据数理统计方法,寻找规律,最后可以发现其实是一个斐波那契数列:0,1,2,3,5,8,13,21,34... */public class C原创 2016-05-29 08:26:54 · 260 阅读 · 0 评论 -
LeetCode - BestTimetoBuyandSellStockI
/** * 问:给出了一个股票的价格数组,求买入再卖出的最大收益。 * 解: * 1、股票的卖出必定在买入之后,所以我们求的不是数组的最大差值。 * 2、通过O(n*n)很容易求出一个数和其后面的数的差值的最大值,但显然不是好的算法。 * 3、有一个巧妙的方法是创建一个数组,记录对应位置元素后面的最大值,然后将该数组 * 减原数组,得出一个最大差值数组,遍历该最大差原创 2016-05-29 08:28:49 · 331 阅读 · 0 评论 -
LeetCode - BestTimetoBuyandSellStockII
/** * 问:已知某股票的价格数组,且该股票可买卖很多次,但是只有卖了才能重新买。求最大收益。 * 解:贪心算法:只要能赚钱就卖。 */public class BestTimetoBuyandSellStockII {public int maxProfit(int[] prices) {int result = 0;for (int i=0; ii原创 2016-05-29 08:30:16 · 331 阅读 · 0 评论 -
LeetCode - BalancedBinaryTree
/** * 问题:判断一棵树是否是平衡二叉树。 * 解:平衡二叉树要求所有左右子树的高度相差不会超过1,所以算法的核心是递归。 */public class BalancedBinaryTree {// 内部节点类public class TreeNode {int val; // 节点的关键字TreeNode left; // 左孩子TreeNod原创 2016-05-29 08:31:41 · 207 阅读 · 0 评论 -
LeetCode - Anagrams
import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Anagrams * Given an array of strings, return all groups o原创 2016-05-29 08:33:15 · 198 阅读 · 0 评论