05 2019 档案
摘要:题目描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 示例 2:
阅读全文
摘要:问题描述:n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的人出局。现在需要求的是最后一个出局的人的编号。 给定两个int n和m,代表游戏的人数。请返回最后一个出局的人的编号。保证n和m小于等于1000。 思想: 把n个人的编号改为0~n-1,然后对删除的过程进行分析。
阅读全文
摘要:问题描述:输入n个数,其中一个数的个数大于等于n/2,请输出那个数 例如: 输入: 18 3 3 5 4 3 2 4 2 3 3 4 5 2 13 3 3 3 3 输出:3 第一种方法:用map集合做,key-value分别对应数组元素和出现次数,代码如下: 第二种方法: 先看下面几个例子,蓝色是下
阅读全文
摘要:给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。 示例 1: 示例 2: 注意: 0 < s1.length, s2.length <= 1000。 所有字符串中的字符ASCII值在[97, 122]之间 思想:典型的求字符串最优解问题,一般都是使用动态规划法。d
阅读全文
摘要:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 思想:从最底层向上找最短路径,下面给出两种解法,一维数组和二维数组两种解法,但是思想都是一样的。 一维数组解法: 二维数组
阅读全文
摘要:数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。 示例
阅读全文
摘要:问题描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 示例 2: 示例 3:
阅读全文
摘要:问题描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例:
阅读全文
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 示例 2: 上面代码优化一下:可采用动态规划的方法去做,思想和暴力法一样,代码优化了 代码如
阅读全文
摘要:问题描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在
阅读全文
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 示例 2: 输出结果如下:
阅读全文
摘要:在解决全排列问题之前,先讲解一个它的子问题,输出给定数字比它大的下一个数字,为了方便,我们把输入和输出数字用数组表示 给出一组数,输出它的下一个排列 假设给定数组[1,2,3,5,4] 比它大的下一个数字是[1,2,4,3,5] 思想: 假设出入数组为arr 1.我们从后向前遍历,找到arr[i]>
阅读全文
摘要:求解两数的最大公约数有以下四种常见的方法: 1.暴力法 2.辗转相除法 3..更相减损术 4.更相减损术与移位相结合 四种方法时间复杂度比较: 1.暴力法:时间复杂度为O(min(a,b))2.辗转相除法:时间复杂度不好计算,可以近似的看成O(log(max(a,b))),取模性能较差3.更相减损术
阅读全文
摘要:给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。 如果有多个目标子集,返回其中任何一个均可。 示例 1: 示例 2: 这道题和找最长子序列有点像! 举个例子 [1,2,3] 我们用dp[i]记录
阅读全文
摘要:单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",就如同葵花宝典或辟邪剑谱的中心思想就八个字"欲练此功必先自宫",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就
阅读全文