本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第36篇文章,我们一起来看下LeetCode的62题,Unique Paths. 题意 其实这是一道老掉牙的题目了,我在高中信息竞赛的选拔考试上就见过这题.可想而知它有多古老,或者说多经典吧.一般来说能够流传几十年的算法题,一定是经典中的经典.下面我们就来看下它的题意. 这题的题意很简单,给定一个矩形的迷宫,左上角有一个机器人,右下角是目的地.这个机器人只能向下走或者是向右走,请问这个机器人走到目的地的路径一共…
题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12). 示例 2: 输入: "226" 输出: 3 解释: 它可以解码为 "BZ" (2 26), &quo…
https://leetcode.com/mockinterview/session/result/xyc51it/https://leetcode.com/problems/recover-binary-search-tree/// 想到了Space O(N)的解法:方法是直接将BST放平,然后重新排序,然后比较一下就可以.// 原题中提到说,有 Space O(Constant)的方法,还要研究一下看了Discuss,也上网搜了一下,发现空间O(1)可以用 Morris遍历的方法.单独写了一…
每道题附带动态示意图,提供java.python两种语言答案,力求提供leetcode最优解. 描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13输出: 2解释: 13 = 4 + 9. 思路: 这道题的官方分类是[动态规划],所以我们用动态规划的方法来解,动态规划最重要的是找到它的状…
leetcode题目 98. 验证二叉搜索树 前序遍历 最简洁的答案版本,由于先判断的是根节点,所以直接判断当前root的值v,是否满足大于左子树最大,小于右子树最小,然后再遍历左子树,右子树是否是这样 func isValidBST(root *TreeNode) bool { return dfs(root,math.MinInt64,math.MaxInt64) } func dfs(root *TreeNode,min float64,max float64) bool { if roo…
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. Example 1: Input: n = 12 Output: 3 Explanation: 12 = 4 + 4 + 4. Example 2: Input: n = 13 Output: 2 Explanation: 13 = 4 + 9. 给定…
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2: 输入: n = 13输出: 2解释: 13 = 4 + 9. 路径最短的问题 使用BFS最优 BFS其实是很简单的算法,只需要掌握以下几个套路 1.BFS算法组成的三要素:队列.入队及出队的结点.已经访问的标记集合 队列:先入先出的容器 入队.出队的结点 已访问标记…
Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Input:Digit string "23" Outpu…
这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位.例如: 输入:5 输出:2 说明:5的二进制表示为101(无前导零位),其补码为010,因此需要输出2. 输入:1 输出:0 说明:1的二进制表示形式为1(无前导零位),其补码为0,因此需要输出0. 注意: 保证给定的整数适合32位有符号整数的范围. 您可以假设整数的二进制表示中没有前导零位. 本…
这是悦乐书的第207次更新,第219篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第75题(顺位题号是349).给定两个数组,编写一个函数来计算它们的交集.例如: 输入:nums1 = [1,2,2,1],nums2 = [2,2] 输出:[2] 输入:nums1 = [4,9,5],nums2 = [9,4,9,8,4] 输出:[9,4] 注意: 结果中的每个元素都必须是唯一的. 结果可以是任何顺序. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.…