摘要:
二分查找 思路 满足k^2<=x的最大k值,使用二分查找 注意边界问题 代码 牛顿迭代法 袖珍计算器 官方详解 "69.x的平方根" 阅读全文
摘要:
动态规划 思路 用dp(i,j)=x既可以表示以(i,j)为右下角的正方形的数目(即边长为1,2..,x的正方形各一个),也可以表示以(i,j)为右下角的正方形的最大边长。 计算出所有dp(i,j)的值并进行累加,即为所求。 dp(i,j)与相邻位置的关系,参考 "官方讲解" 代码 暴力解法 思路 阅读全文
摘要:
解法1(暴力解法) 思路 遍历数组,依次以每一个点作为正方形的左上角 计算所能构成正方形的最大边长 在最大正方形的范围内,边长从小到大增大。边长每增加1,则新增一行一列,判断新增的点是否为 '1',maxSide保存符合要求的边的值。 注意细节处理 代码 解法2(动态规划) 官方思路 通过动态规划降 阅读全文
摘要:
思路 核心思想 递归 首先寻找s,t具有相同的根节点的子树 p ,q 判断p 、q是否相同(判断两棵树是否相同) 代码 阅读全文
摘要:
该题晓得需要用动态规划解决,但还是不会做。以下为大佬的解题分析 优解 思路 代码 阅读全文
摘要:
解题(失败) 思路 分别遍历左右子树,用pre存储上一个节点,作比较 代码 本想把左右子树判断函数合并,但运行结果是错的,问题复杂化了,思路有问题 优解 思路 中序遍历时,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足BST,继续遍历;否则直接返回false 代码 小结 做题前缺乏思考 阅读全文
摘要:
解法1 思路 数组中的每个元素 依次 作为子序的头元素 ,枚举各自构成子序的结果 双for O(n^2) 160 ms 代码 优化 动态规划 "动态规划算法思想" 阅读全文
摘要:
解题 思路 首先两个字符串长度都相等,无后顾之忧。 将两个数组分别装入两个List集合,调用Collections.sort(list)进行排序,得到集合l1,l2。 若要满足要求,要么 l1 的元素都小于等于 l2 ,要么 l1 的元素大于等于 l2。 通过用例 161ms 代码 java pub 阅读全文
摘要:
解题 思路 核心是分类讨论 将数转成字符串,便于截取操作;同时,将数转成字符数组,便于替换 根据要求,若要差值最大,需找到最小值,最大值。 注意不能有前导0 14ms 待优化 代码 阅读全文
摘要:
解题 思路 将每条路线看成 装入Map集合 不存在循环的路线,因此只会有一个终点。假定list第一组路线为初始值,做,检查map中是否存在key的值为end。若map中存在 更新 ,继续寻找,否则返回end。 代码 阅读全文