本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第36篇文章,我们一起来看下LeetCode的62题,Unique Paths. 题意 其实这是一道老掉牙的题目了,我在高中信息竞赛的选拔考试上就见过这题.可想而知它有多古老,或者说多经典吧.一般来说能够流传几十年的算法题,一定是经典中的经典.下面我们就来看下它的题意. 这题的题意很简单,给定一个矩形的迷宫,左上角有一个机器人,右下角是目的地.这个机器人只能向下走或者是向右走,请问这个机器人走到目的地的路径一共…
这篇文章的主题是动态规划, 主要介绍LeetCode中一维动态规划的题目, 列表如下: Climbing StairsDecode WaysUnique Binary Search TreesMaximum SubarrayBest Time to Buy and Sell Stock 在介绍上述具体题目之前, 我们先说说动态规划的通常思路. 动态规划是一种算法思路(注意这里不要和递归混淆, 事实上递归和迭代只是两种不同的实现方法, 并不是算法), 用一句话来总结就是, 动态规划是利用存储历史信…
https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-mian-shi-ti-xiang-jie-by-labuladong/ (思路很好,有图很好理解) 动态规划该如何优化 描述 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符示例 1: 输入: word1 = "horse&…
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所以JDK 最好下载 JDK 9以上的版本. 62. 当有其他更合适的类型时就不用字符串 字符串被设计用来表示文本,它们在这方面做得很好.因为字符串是如此常见,并且受到开发语言的良好支持,所以很自然地倾向会将字符串用于其他目的,而不是它们设计的原本目的.这一条目讨论了一些不应该使用字符串做的事情. 字…
LeetCode初级算法--动态规划01:爬楼梯 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ csdn:https://blog.csdn.net/abcgkj/ github:https://github.com/aimi-cn/AILearners 一.引子 这是由LeetCode官方推出的的经典面试题目清单~ 这个模块对应的是探索的初级算法~旨在帮助入…
一直以来,对于MySQL root密码的忘记,以为只有一种解法-skip-grant-tables. 问了下群里的大咖,第一反应也是skip-grant-tables.通过搜索引擎简单搜索了下,无论是百度,抑或Google,只要是用中文搜索,首页都是这种解法.可见这种解法在某种程度上已经占据了使用者的心智.下面具体来看看. skip-grant-tables的解法 首先,关闭实例 这里,只能通过kill mysqld进程的方式. 注意:不是mysqld_safe进程,也切忌使用kill -9.…
[题目] A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish'…
动态规划该如何优化 描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格.有多少可能的路径? 说明:m 和 n 的值均不超过 100. 示例 1: 输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角.1. 向右 -> 向右 -> 向下2. 向右 -…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天给大家分享的是LeetCode当中的32题,这是一道Hard难度的题.也是一道经典的字符串处理问题,在接下来的文章当中,我们会详细地解读有关它的三个解法. 希望大家不要被题目上的标记吓到,虽然这题标着难度是Hard,但其实真的不难.我自信你们看完文章之后也一定会这么觉得. 链接 Longest Valid Parentheses 难度 Hard 描述 给定一个只包含左右括号的字符串,返回最长能够组成合法括号的长度 Given a s…
文章标题借用了Hawstein的译文<动态规划:从新手到专家>. 1. 概述 动态规划( Dynamic Programming, DP)是最优化问题的一种解决方法,本质上状态空间的状态转移.所谓状态转移是指每个阶段的最优状态(对应于子问题的解)可以从之前的某一个或几个阶段的状态中得到,这个性质叫做最优子结构.而不管之前这个状态是如何得到的,这被称之为无后效性. DP问题中最经典的莫过于01背包问题: 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装…
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in t…
问题描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为"Finish"). 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格.有多少可能的路径?LeetCode原题 问题分析: 这是一个比较简单的动态规划问题,由于没有障碍 (不同路径2 网格中有障碍), 由于每一步都只能向右或者向下,那很明显,可以知道第一行和第一列的每一个格子…
动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串   22.4% 中等 10 正则表达式匹配   18.8% 困难 32 最长有效括号   23.3% 困难 44 通配符匹配   17.7% 困难 53 最大子序和 C#LeetCode刷题之#53-最大子序和(Maximum Subarray)-该题包含分治讨论 38.4% 简单 62 不同路径   49.5% 中等 63 不同路径 II   29.4% 中等 64 最小路径和   55.0% 中等 70 爬楼梯   40.8% 简单…
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = "leetcode", dict = ["leet", "code"]. Return true because…
目录 爬楼梯 买卖股票的最佳时机 最大子序和 打家劫舍 动态规划小结 Shuffle an Array 最小栈 爬楼梯 第一想法自然是递归,而且爬楼梯很明显是一个斐波拉切数列,所以就有了以下代码: class Solution { public: int climbStairs(int n) { if(n==0) return 0; if(n==1) return 1; if(n==2) return 2; if(n>2) { return (climbStairs(n-1)+climbStai…
描述 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额. 示例 1: 输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3).  偷窃到的最高金额 = 1 + 3 = 4 .示例 2: 输入: [2,…
62. Unique Paths class Solution { public: int uniquePaths(int m, int n) { || n <= ) ; vector<vector<int> > dp(m,vector<int>(n)); dp[][] = ; ;i < m;i++) dp[i][] = ; ;i < n;i++) dp[][i] = ; ;i < m;i++){ ;j < n;j++){ dp[i][j]…
Total Accepted: 31557 Total Submissions: 116793     Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. [ [2], [3,4], [6,5,7], [4,1,8,3] ] The minimum path sum from top to botto…
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in t…
你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额. 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3).   偷窃到的最高金额 = 1 + 3 = 4 . 示例 2: 输入: [2…
描述: m*n的矩阵,从左上角走到右下角,只能向下或向右走. 解决: 简单dp,dp[i][j]表示到i,j这点总共多少种路径. dp[i][j] = dp[i][j - 1] + dp[i - 1][j],化为一维: int uniquePaths(int m, int n) { int* arr = new int[m](); ; i < m; ++i) // 初始化 arr[i] = ; ; i < n; ++i) { ; j < m; ++j) { ) arr[] = ; arr…
1. 原题链接 https://leetcode.com/problems/unique-paths/description/ 2. 题目要求 给定一个m*n的棋盘,从左上角的格子开始移动,每次只能向右或向下移动一格,直至右下角的格子.返回所有不同路径的总数. 注意:m和n都不超过100 3. 解题思路…
前言 这里总结了两道表格移动的问题,分别是:Unique Paths 和 题一:Unique Paths 描述 A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach t…
描述 Given two words word1 and word2, find the minimum number of operations required to convert word1 to word2. You have the following 3 operations permitted on a word: Insert a character Delete a character Replace a character Example 1: Input: word1 =…
目录 54/59螺旋矩阵 62不同路径 64最小路径和 120三角形最小路径和 695岛屿的最大面积 547朋友圈 718最长重复数组 221最大正方形 121/122/123/714/188买卖股票的最佳时机 416分割等和子集 01背包/最近等分子集 70爬楼梯 54/59螺旋矩阵 思路: 设置上下左右四个边界变量 新建ArrayList存储结果 循环:四个循环,左->右,上->下,右->左,下->上.每次循环添加结果,循环后判断边界是否相等了,是的话就退出 // 设置边界变量…
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in t…
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多少条不同的路径? class Solution { public: int uniquePaths(int m, int n) { vector<); ; i < m; ++i) { ; j < n; ++j) { dp[j] += dp[j - ]; } } ]; } }; 思路: 动态规…
62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为"Finish"). 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格.有多少可能的路径? 说明:m 和 n 的值均不超过 100. 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角. 向右 -> 向…
/** * Created by lvhao on 2017/7/6. * A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right co…
/** * Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if you are able to reach the last index. For exampl…