摘要:一、题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 示例 2: 二、思路:数学想法 四平方和定理:每个正整数都可以表示为至多4个正整数的平方和。故该题答案为1,2,3或4. 该数 n 若能
阅读全文
摘要:一、题目: 编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 说明: 思路:动态规划 t1,t2,t3三个变量记录乘以2,3,5的个数。如: 代码:
阅读全文
摘要:参考链接:https://www.cnblogs.com/AndyJee/p/4465696.html 一、题目:最长回文子序列长度 给定字符串,求它的最长回文子序列长度。回文子序列反转字符顺序后仍然与原序列相同。例如字符串abcdfcba中,最长回文子序列长度为7,abcdcba或abcfcba。
阅读全文
摘要:一、题目: 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。 示例 1: 示例 2: 注意: 0 < s1.length, s2.length <= 1000。 所有字符串中的字符ASCII值在[97, 122]之间。 思路:动态规划:时间O(M*N),空间O(M
阅读全文
摘要:一、题目: 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 以下数列不是等差数列。 数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。 如果满足以下条件
阅读全文
摘要:一、题目: 亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止
阅读全文
摘要:一、题目:打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金
阅读全文
摘要:一、题目:交错字符串 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 示例 1: 示例 2: 思路:动态规划:时间O(M*N ),空间O(M*N) 构造一个(M+1)*(N+1)的矩阵dp:dp[i][j] 代表是s1的前i个字符与s3中匹配,s2中前j个
阅读全文
摘要:一、题目:最小编辑代价 给定两个字符串str1和str2,再给定三个整数ic,dc,rc,分别代表插入、删除、替换一个字符的代价,返回将str1编辑成str2的最小代价。举例:str1="abc" str2="adc" ic=5 dc=3 rc=2,从"abc"编辑到"adc"把b替换成d代价最小,
阅读全文
摘要:一、题目:最长公共子序列: 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串L:BDCABA;字符串S:ABCBDAB 则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA 思路:动态规划:时间O(n * m),空间O(n
阅读全文
摘要:一、啥问题可以用动态规划来解决【采用空间来存储重复计算的结构】 举例子:斐波那契问题:F(n) = F(n-1) + F (n-2) F(n)分为两个子问题:F(n-1)和F(n-2), 而F(n-1)和F(n-2)重复计算了F(n-2)部分,所以这两个问题就是重复子问题 重复子问题可以用空间来存储
阅读全文
摘要:一、题目:换钱的最小次数 给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。 举个例子 arr[5,2,3] ,aim=20 4张5元可以组成20,并且是最小的,所以返回4 arr[
阅读全文
摘要:一、题目:矩阵最小路径 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 思路1:时间O(M*N),空间O(M*N) 新建一个矩阵dp(大小也是M*N),该矩阵是从上往下,从左往右记录每一步的结果的
阅读全文
摘要:一、题目:斐波那契算法 给定整数N,返回斐波那契数列的第N项。 递归代码:时间*O(2**N) 非递归代码:动态规划:时间O(N),一个一个加和 非递归代码:时间O(logN),求一个矩阵N次方的值。 斐波那契可转化成矩阵N次方的问题。 二、题目:爬楼梯:动态规划:时间O(N) 假设你正在爬楼梯。需
阅读全文
摘要:一、题目:基本计算器【只有 + ,- ,以及括号】 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。 示例 1: 示例 2: 示例 3: 非递归思路: 栈: 采用栈存储遇到 ( 之前的结果。 遇到 ),将栈
阅读全文
摘要:一、采用栈找到元素左边和右边第一个比其小的数 二、采用栈找到元素左边和右边第一个比这个元素大的值。 三、找到下一个更大的元素: 就是二中找到右边大的元素。
阅读全文
摘要:一、题目:原子的数量 给定一个化学式formula(作为字符串),返回每种原子的数量。 原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。 如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如,H2O 和 H2O2 是可行的,但 H1O2 这
阅读全文
摘要:一、题目:索引处的解码字符串 给定一个编码字符串 S。为了找出解码字符串并将其写入磁带,从编码字符串中每次读取一个字符,并采取以下步骤: 如果所读的字符是字母,则将该字母写在磁带上。 如果所读的字符是数字(例如 d),则整个当前磁带总共会被重复写 d-1 次。 现在,对于给定的编码字符串 S 和索引
阅读全文
摘要:一、题目:移除K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 示例 2 : 示例 3 : 思路1: 采用一个栈:若栈最后一个元素比num中当前元素大,
阅读全文
摘要:一、题目:逆波兰表达式求解 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 示例
阅读全文