Leetcode 算法
jiang_mingyi
想专注于整个软件开发流程,现阶段有部分前端开发经验和少量的后端开发经验
展开
-
动态规划求取C(n,m)
先看一个高中概率题:小明在一个M*N的街道上从(0,0)走到(m,n)有几种走法(小明不傻,不绕路)? 数学解法:从(0,0)走到(m,n)一共要走过m+n个街道,其中m个横着的,n个竖着的。转化为m个横和n个竖的排列有多少?这个显然就是C(n,m+n). 动态规划解法: f(m,n)=f(m-1,n)+f(m,n-1);//m,n>0 f(m,n)=f(m-1,n);//m>0,n=0原创 2017-09-16 13:56:14 · 1015 阅读 · 0 评论 -
LeetCode 62 Unique Paths
题目大意:机器人从一个M*N的矩阵的一点(start)走到另一点(end),只能向下或者向上有几种走法 一看这题,就想起高中学概率时的时候做的一题:小明在一个M*N的街道上从(0,0)走到(m,n)有几种走法(小明不傻,不绕路)? 这不一模一样? 从(0,0)走到(m,n)一共要走过m+n个街道,其中m个横着的,n个竖着的。什么时候走横的什么时候走竖的全看小明心情,所有就有C(m,m+n)原创 2017-09-12 17:36:06 · 183 阅读 · 0 评论 -
leetcode 152 O(n)解决方案
题目大意:寻找一个子序列,使其乘积达到最大。 解决思路:记f[i]为前i个数能得到的最大乘积。递推公式如下: f[i]=Max(f[i-1],b[i]);b[i]表示含有nums[i]的最大乘积。 为求b[i],构造一个额外数组temp,temp[i]=nums[i]*nums[i-1]….*nums[j]; j=0或者nums[j-1]=0, nums原创 2017-10-09 21:47:33 · 915 阅读 · 0 评论