牛客网高级算法
高级算法
AI_Younger_Man
这个作者很懒,什么都没留下…
展开
-
leetcode-79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false思路:原创 2020-09-30 15:30:11 · 118 阅读 · 0 评论 -
leetcdode- 687. 最长同值路径
最长同值路径给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入: 1 / \ 4 5 / \ \ 4 4 5输.原创 2020-09-30 09:57:16 · 102 阅读 · 0 评论 -
leetcode-
找两个和为目标值且不重叠的子数组给你一个整数数组 arr 和一个整数值 target 。请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。示例 1:输入:arr = [3,2,2,4,3], target = 3输出:2解释:只有两个子数组和为 3 ([3] 和 [3])。它们的长度和为 2 。示例 2:输入:arr =.原创 2020-09-24 15:21:48 · 106 阅读 · 0 评论 -
动态规划:最长上升子序列(java)
最长上升子序列:要求球数组当中严格递增的子序列,可以不连续。思路:设一个数组,保存以当前元素结尾的最长递增子串。例如,1结尾的最长递增子串是1个元素,3结尾的最长递增子串是2各元素,2结尾的最长递增子串是2各元素,计算5结尾的时候,先求max之前所有元素的最长递增子串,然后1<5,所以生成2,。3<5,所以生成3。2<5,所以生成3,所以5的位置上是3.再看1,imp...原创 2020-02-25 17:51:13 · 1756 阅读 · 0 评论 -
分治法:求数组中最值问题
给定一个数组返回最大值。可以遍历数组,但是时间复杂度是On现在用分治法:时间复杂度是Ologn或者使用Arrays先对数组进行升序排序,输出最后一个元素也行。import java.util.Arrays;public class maxSubstring { public static int getArrMaxDivide(Integer arr[], int strat, ...原创 2020-02-25 14:09:51 · 620 阅读 · 0 评论 -
动态规划:返回数组最大子序和(java)
给定一个整数数组,返回数组中连续的最大子序和。声明一个同样大小的辅助数组temp,保存当前位置最大的子序和。然后对这个temp数组求最大值。求数组的最大值可以用 分治法 或者 调用Arrays的APIimport java.util.Arrays;public class maxSubstring { public static int getArrMaxDivide(Inte...原创 2020-02-25 14:03:26 · 408 阅读 · 0 评论