10 2018 档案

摘要:一、题目 1、审题 2、分析 给出一个字符串,在此字符串前边添加字符,使得其成为一个回文,求添加最少字符后,所形成的回文。 二、解答 1、思路: 方法一、 ①、为了处理回文字符数为奇数和偶数的问题,先在字符串 s 的每一个字符之间插入字符 '#',并将每个字符放入一个 List 中 ②、下标 ind 阅读全文
posted @ 2018-10-31 22:50 skillking2 阅读(162) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一个连续的数组,你能获取不连续的元素值代表的财富,数组首尾的两个元素算作连续,求能获得的最大财富值。 二、解答 1、思路: 在 198. House Robber 的基础上添加了首尾不能连续的条件。 故,可以采用破坏圈的方法,即获取的元素范围为 [0, len - 2] 阅读全文
posted @ 2018-10-31 21:47 skillking2 阅读(421) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二维字符矩阵 board,一个字符串数组 words。求出矩阵中连续的字符能组成的 words 中的单词,一个单词只能用同一个位置的字符一次。 二、解答 1、思路: 采用 Trie 字典树。 ①、根据 words 创建 一个 Trie ②、遍历 board,以每 阅读全文
posted @ 2018-10-31 21:05 skillking2 阅读(187) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 与208不同的是, search() 方法可以传入的单词可以包含 '.' ,代表任意一个字符。 二、解答 1、思路: 采用 DFS 方式,当查找单词中字符为 '.' 时,从当前 Trie 节点的所有非空子节点开始查找一次,若有一个返回成功,则为 true;若都失败,则 阅读全文
posted @ 2018-10-31 21:01 skillking2 阅读(134) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 实现一个 Trie(字典树)。 二、解答 1、思路: ①、新建一个 root 作为根节点,root 一般包含布尔型 isWord 判断到此节点是否是一个完整 word;TrieNode[26], 下标 0~25 代表字符 'a' ~'z' ;字符串 word 代表到此节 阅读全文
posted @ 2018-10-31 20:55 skillking2 阅读(193) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求正整数数组 nums 中连续的元素和大于等于 s 的最少元素的个数。 二、解答 1、思路: 方法一、 ①、采用变量 min 记录最少元素数,初始值为 Integer.MAX_VALUE; ②、遍历 nums 中元素,若当前元素下标为 i 时;令变量 sum = num 阅读全文
posted @ 2018-10-31 10:56 skillking2 阅读(159) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出顶点数、指向当前顶点的前驱顶点,判断当前顶点组成的图是否是一个有向无环图。 二、解答 1、思路: 方法一、 采用拓扑排序 ①、定义数组 matrix[][] 存储从 i 指向 j 的边,curArr[] 存储指向当前顶点的边数。并初始化这两个数组; ②、将没有前驱的 阅读全文
posted @ 2018-10-24 19:53 skillking2 阅读(173) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断等长的字符串 s 与 t ,其中的字符是否有一一对应的关系。其中 s 中的一个字符只能对应对应 t 中的特定的一个字符。 二、解答 1、思路: 方法一、 使用一个 Map , key 为 s 中的字符, value 为 t 中的字符。 过程如下; 、判断 Map 中 阅读全文
posted @ 2018-10-22 12:25 skillking2 阅读(139) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 分别采用递归、迭代的方式将链表进行翻转。 二、解答 1、思路: 方法一、 迭代: 采用两个指针 pre、cur 方法二、 递归: 阅读全文
posted @ 2018-10-20 17:49 skillking2 阅读(104) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 统计 < n 的数字中质数的个数。 二、解答 1、思路: 方法一、 采用一个大小为 n 的 bool 数组,标记非质数。 阅读全文
posted @ 2018-10-20 13:03 skillking2 阅读(108) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 将链表中值为 val 的节点去除。 二、解答 1、思路: 方法一、 创建一个头结点,将后边的值为 val 的节点一一删除。 优化: 采用 pre、cur 指针,使代码更简洁 方法二、 采用递归 阅读全文
posted @ 2018-10-19 22:33 skillking2 阅读(127) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数数字 n ,将其包含的每一位数字求平方最后求和,并赋值为 n,最终 n 为 1则称 n 为快乐数,若 n 不是快乐数,那他最终会陷入一个不会包含 1 的循环。判断 n 是不是一个快乐数。 二、解答 1、思路: 方法一、 通过设置两个指针,fast、slow。 阅读全文
posted @ 2018-10-19 21:59 skillking2 阅读(140) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求 n~m 范围内的所有数字进行二进制 & 运算后的结果。 二、解答 1、思路: 方法一、 以 26~30 为例,二级制 & 运算,若出现了一个 0 则结果为 0。在这个例子中,结果为 11000,因此我们要减去后边部分不同的部分。这里后边有 3 个不同。 方法二、 直 阅读全文
posted @ 2018-10-19 20:23 skillking2 阅读(152) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二维数组表示的字符集合,求出其中所有的由 1 组成的群体的个数,(想连续的 1 组成一个)。 二、解答 1、思路: 方法一、 遍历数组中的每一个元素,将出现的值为 ‘1’ 的元素值改为 ’2‘,同时递归的将与此元素相连的值为 ‘1’的扩展元素值也改为 ‘ 2‘, 阅读全文
posted @ 2018-10-19 15:57 skillking2 阅读(145) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一棵二叉树,从右边看他,看到的每一层的第一个元素存起来。 二、解答 1、思路: 方法一、 采用 Queue 进行层次遍历,且每次获取一层的最右边一个元素。 方法二、 采用递归获取每一层最右边元素; 即修改后的前序遍历,遍历顺序为: 根 --> 右 --> 左 ; 巧妙的 阅读全文
posted @ 2018-10-18 20:43 skillking2 阅读(118) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,你不能获取连续元素,只能间隔获取元素的值,求你能获取的元素的和的最大值为多大。 二、解答 1、思路: 方法一、 采用两个变量 max1、max2 记录奇数、偶数位置所能获取的最大值。 可能获取此位置的值,也可能不获取。 方法二、 采用一维动态数组记录当 阅读全文
posted @ 2018-10-17 22:02 skillking2 阅读(144) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 统计给出的无符号整数的二进制形式中的含有的 1 的个数。 二、解答 1、思路: 方法一、 采用 JAVA 的 toBinaryString 方法,求出其二进制形式的字符串形式,在统计含有的字符 ‘1‘ 的个数。 方法二、 ①、通过 n & 1 求出 n 最后一位二进制的 阅读全文
posted @ 2018-10-17 20:26 skillking2 阅读(136) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个 32位的无符号整形,将其二进制形式进行翻转,求出反转后的二进制代表的数值。 二、解答 1、思路: 方法一、 采用位运算符进行运算。 ①、n & 1 可以取到 n 的最后一位二进制位 end; ②、n >>>= 1,n 无符号右移一位 ③、result <<= 阅读全文
posted @ 2018-10-17 19:54 skillking2 阅读(152) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,将每一个元素向右边移动 k 个元素。 二、解答 1、思路: ①、将数组整体翻转一遍; ②、将数组从 (0,K-1)翻转一遍; 则前 K 个元素已经符合; ③、将数组从(K,end)翻转一遍;则后边 end - K 个元素已经符合; 阅读全文
posted @ 2018-10-17 16:53 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求出在 S 中出现至少两次的十个字符组成的字符串。 二、解答 1、思路: 采用一个 Set 存储每一个字符串,当已存储的字符串再次出现时,会添加失败,则表示此字符串至少出现了两次,应当存储在另一个 Set 中进行去重。最终将第二个 Set 转为 List 即可。 阅读全文
posted @ 2018-10-17 15:55 skillking2 阅读(129) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,将其中的元素进行拼接,形成的最大的数值。返回字符串形式的这个数值(防止溢出)。 二、解答 1、思路: ①、将整形数组转为字符串数组; ②、重写 Comparator 的 compare 方法,对拼接后的字符串大小进行比较 ; ③、最终根据此 compa 阅读全文
posted @ 2018-10-17 13:52 skillking2 阅读(115) 评论(0) 推荐(0)
摘要:摘自: https://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html https://blog.csdn.net/arbben/article/details/78665389 1、mysql中变量不用事前申明,在用的时候直接用“@ 阅读全文
posted @ 2018-10-17 10:55 skillking2 阅读(1495) 评论(0) 推荐(0)
摘要:摘自: https://blog.csdn.net/holly2008/article/details/25704471 表连接分为:CROSS JOIN、INNERT JOIN、OUTER JOIN、SELF JOIN。 一、CROSS JOIN 交叉连接 CROSS JOIN连接用于生成两张表的 阅读全文
posted @ 2018-10-17 10:01 skillking2 阅读(311) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 只能向右、向下移动的王子,从左上角要到右下角救公主,每经过一个方格,可能获得血瓶加血量,或者碰到怪物减血量,当王子血量 < 1 时就挂了,为了能成功救得公主,求王子的最小的初始血量。 二、解答 1、思路: 方法一、 采用二维数组 dp[][] 的动态规划方法: ①、使用 阅读全文
posted @ 2018-10-16 22:55 skillking2 阅读(156) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二分查找树的根节点。实现 next() 方法返回下一个最小的二叉树的节点值。 hasNext() 判断是否还有值。 二、解答 1、思路: 采用一个 Stack 存储二叉查找树的左斜子树节点值。 next() 方法返回栈顶节点值,并将其右孩子的左斜子树入栈即可。 阅读全文
posted @ 2018-10-16 20:53 skillking2 阅读(90) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 以上图对应关系,输入一个字符串,输出其对应的整数。 二、解答 1、思路: 上表中,1——26 对应 A——Z; 而,A——Z 下标对应 0——25; 所以每次 S 中字符 c 对应的整数为: c - ‘A' + 1;再依次拼接数值即可。 阅读全文
posted @ 2018-10-16 14:53 skillking2 阅读(115) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,其中一个元素出现的次数 大于 n / 2 次。输出此元素。 二、解答 1、思路: 采用一个变量 count 进行计数。遍历结束时 count 大于 0 或遍历时出现 count > N / 2 ,则返回对应的元素 阅读全文
posted @ 2018-10-16 14:41 skillking2 阅读(107) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个正整数,给出如上对应方式对应的字符串。 二、解答 1、思路: sheet 中,1 —— 26 对应 A——Z; 而, A——Z 对应的下标为 0——25; 所以 每次计算时 n--; 阅读全文
posted @ 2018-10-16 13:51 skillking2 阅读(121) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个升序的整形数组,当两个元素之和为 target ,输出这两个元素的下标。(只有一组符合的数) 二、解答 1、思路: 方法一、 采用两个指针,start 从前向后移动,end 从后向前移动;当 num[start] + num[end] = target 时,输出 阅读全文
posted @ 2018-10-15 22:12 skillking2 阅读(121) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数分子,一个整数分母。求商。若商为无限循环有理数,用括号包裹循环的小数。 二、解答 1、思路: ①、先确定商的符号;可以采用 ^ 运算符; ②、计算商的整数部分; ③、计算商的小数部分;同时用一个 Map 记录当前小数数值以及插入的下标,用于判断是否是循环有理 阅读全文
posted @ 2018-10-15 21:45 skillking2 阅读(190) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个非空的且只包含数字、点号的版本号,比较版本号的大小。 二、解答 1、思路: 方法一、 ①、以 split 切割字符串成数组;按顺序对两个数组中字符串进行比较; ②、,短版本号的后边默认为 0,继续比较; 方法二、 ①、将每一个 “.” 分割成的数字字符串拼接成整 阅读全文
posted @ 2018-10-15 11:58 skillking2 阅读(195) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个无序的整形数组,求其有序时相邻元素的最大差值为多大。 二、解答 1、思路: 方法一、 桶排序。 ①、首先找出数组中最大元素、最小元素: max 、min; ②、去除 max、min 时数组剩下 N - 2 个元素,取 N - 1 个桶进行存放,则一个桶内存放元素 阅读全文
posted @ 2018-10-15 11:21 skillking2 阅读(273) 评论(0) 推荐(0)
摘要:1、思路: ①、首先找到数组中的最大值,然后新建一个初始值为 0 的数组 bucket, 此数组的长度是数组最大值+1,新建的这个数组中的下标值存放的元素就是原数组的数据值。 ②、找到最大值后,开始遍历原数组,把原数组的数据加入bucket的下表中,bucket[i],每当有1个i bucket[i 阅读全文
posted @ 2018-10-14 21:20 skillking2 阅读(159) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,输出比左右元素值大的数值的下标。若左边或右边没有元素,则视为左或右边 为负无穷大。 二、解答 1、思路: 方法一、 直接顺序遍历数组,判断是否比左右元素值大。 方法二、 所求元素即为一个顶点。 其实不用专门判断比左边元素大。直接用 if 判断即可 方法 阅读全文
posted @ 2018-10-13 20:00 skillking2 阅读(189) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个单向链表,如果两个链表用重叠部分,输出重叠节点的第一个节点,否则输出 null; 二、解答 1、思路: 方法一、 将两个链表按照尾部进行对齐,在开始遍历链表,查找是否存在重叠节点。 ①、计算两个链表长度; ②、将长的链表向后移动,使得两链表尾部对齐; ③、开始查 阅读全文
posted @ 2018-10-13 17:38 skillking2 阅读(161) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 设计一个 minStack,使其有 pop、push、top、getMin 功能,且 getMin 的检索时间为常数。 二、解答 1、思路: 采用一个 Stack 进行实现。 ①、采用变量 min 记录站中的最小值。 ②、若入栈元素 p >= min,则 P 入栈。否则 阅读全文
posted @ 2018-10-13 17:04 skillking2 阅读(106) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一个可能有重复元素的整形数组绕一个未知元素翻转后,求新数组的最小元素。 二、解答 1、思路: 方法一、 同上一题; 只是需要考虑判断重复的元素是否被翻转到了尾部,此时 end-- 即可。 方法二、 直接采用线性方法进行查找; 阅读全文
posted @ 2018-10-13 16:11 skillking2 阅读(96) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一个有序整数数组翻转成两段增序数组后,求出其中的最小的元素。 二、解答 1、思路: 方法一、 采用二分法求出最小元素。 ①、若 nums[start] < nums[end] ,则数组已经有序;返回 nums[start]; ②、若 nums[start] < nums 阅读全文
posted @ 2018-10-13 15:51 skillking2 阅读(146) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求一个整数数组中的连续子串的最大乘积。 二、解答 1、思路: ①、遍历数组,采用三个变量进行记录。 maxCurProduct:包含当前下标的数组元素时的最大乘积。 minCurProduct: 包含当前下标的数组元素时的最小乘积。 product: 当前为止的最大乘积 阅读全文
posted @ 2018-10-13 12:00 skillking2 阅读(118) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一句话,将其中的单词进行翻转,且每个单词间隔一个空格。 二、解答 1、思路: ①、通过正则表达式将句子根据连续的空格(一个或多个)进行切割,获得一个单词数组 arr; ②、 将 arr 转成 List, 在通过 Collections 进行翻转。 ③、通过 Stri 阅读全文
posted @ 2018-10-13 11:25 skillking2 阅读(116) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出逆波兰表达式(即运算数写前面,操作符写后边),求出运算的正确结果。 二、解答 1、思路: 采用一个 Stack 存储操作数,当碰到运算符时,出栈栈顶的两个元素进行运算即可。最终遍历完数组后, Stack 中存在的唯一一个数即为结果。 阅读全文
posted @ 2018-10-12 21:00 skillking2 阅读(157) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 将一个链表节点进行排序,时间复杂度为 NLogN, 且使用常数的空间复杂度。 二、解答 1、思路: 采用归并排序的思想。 ①、将链表进行切割 ②、将切割的链表进行排序 ③、合并切割的链表。 阅读全文
posted @ 2018-10-12 18:11 skillking2 阅读(185) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个链表,采用插入排序的方式将节点进行排序。 二、解答 1、思路: 方法一、 ①、将第一个节点结点作为新的有序链表的开始。指针 node 指向 head, next 指向 head 的下一个元素。 ②、将 next 值依次与 node 所指链表节点进行比较,并插入合 阅读全文
posted @ 2018-10-12 17:41 skillking2 阅读(130) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、给出一棵二叉树,采用迭代输出其后序遍历序列值。 二、解答 1、思路: 方法一、 采用一个 Stack 记录节点,一个指针 pre 指示 right 节点是否访问过。 方法二、 ①、伪前序遍历比较好写: 根 > 右 > 左; ②、后续遍历 : 左 > 右 > 根 , 即为 ① 阅读全文
posted @ 2018-10-12 16:44 skillking2 阅读(156) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,采用迭代输出先序遍历的节点值。 二、解答 1、思路: 方法一、 采用 Stack + 迭代的方式。 优化: Stack 只用于存储 Right 节点。 方法二、 采用 InOrder 方式遍历,但输出为 InOrder 顺序。 方法三、 采用 Morri 阅读全文
posted @ 2018-10-12 11:15 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个字符串,求其可以切割成字典List 中的元素的所有切法。 二、解答 1、思路: 方法一、 采用 DFS 方式。 从字典表中开始拿字符串与 S 的头部进行匹配,若匹配成功,则继续拿字典表在 S 的剩下的字符串进行匹配。直至 S 剩下的字符串为空,此时就找到一种切法 阅读全文
posted @ 2018-10-12 10:20 skillking2 阅读(175) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个单向链表,将其重新排序,排序规则如上。 二、解答 1、思路: 方法一、 观察上边的重新排序后的链表。可以分为三个步骤。 ①、找到中间节点; ②、将后边部分的链表进行翻转。 ③、在前边部分的链表中间隔插入后边部分链表的一个节点。 阅读全文
posted @ 2018-10-12 08:43 skillking2 阅读(119) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个链表,如果没有环则返回 null, 若存在环,返回环开始的节点。 二、解答 1、思路: 方法一、 阅读全文
posted @ 2018-10-11 22:27 skillking2 阅读(110) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个链表,查看其中是否存在一个环。 二、解答 1、思路: 方法一、 使用一个 Set 存储遍历的节点,当当前遍历的节点不存在于 Set 中,则加入 Set,若已存在于 Set,则返回 true。 方法二、 设置两个指针,walker 每次向后移动一个单位,runne 阅读全文
posted @ 2018-10-11 21:51 skillking2 阅读(109) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个字符串 S,一个字典表 dict,判断 S 是否能由 dict 中的字符串所组成,其中 dict 中的字符串能够多次使用。 二、解答 1、思路: 方法一、 使用一个 DP 数组记录 S 从下标 0 到当前下标位置是否能够正确匹配。 ①、从下标 i = 1 开始遍 阅读全文
posted @ 2018-10-11 12:11 skillking2 阅读(171) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个链表,链表有 next、random 指针。深度复制这张链表 二、解答 1、思路: 方法一、 采用一个 Map 记录是创建的新节点并采用递归进行深度复制。 方法二、 采用一个 Map 记录新建的节点,并采用两个循环进行 next、random 指针赋值。 方法三 阅读全文
posted @ 2018-10-10 16:34 skillking2 阅读(150) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 深度复制一个图的结构。 二、解答 1、思路: 采用一个 Map 存储新建的图的节点值、对应的节点。 阅读全文
posted @ 2018-10-10 15:43 skillking2 阅读(119) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个非空数组,其中包含一个只出现一次的元素,其他的均出现3次,找出只出现一次的那个元素。 二、解答 1、思路: 采用二进制位运算符进行计算: 与 &: 1 & 1 = 1, 0 & 0 = 1 & 0 = 0; 或 | :1 | 0 = 1 | 1 = 1, 0 | 阅读全文
posted @ 2018-10-10 15:21 skillking2 阅读(117) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个非空的只有一个元素出现一次其他元素均出现两次的整形数组,求出出现一次的该元素。 (不使用额外的空间,而且时间复杂度为线性) 二、解答 1、思路: 采用异或(^) 运算符。 1 ^ 1 = 0 ^ 0 = 0;1 ^ 0 = 1; 故,a ^ b ^ a = b 阅读全文
posted @ 2018-10-10 12:03 skillking2 阅读(86) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 每个小孩对应一个等级,每个小孩至少分一颗糖,紧挨着的等级高的小孩要比紧挨着的等级低的小孩的糖果多,求至少要分几颗糖果。 二、解答 1、思路: 方法一、 考虑到每个小孩的分到的糖果数受左右两边的小孩等级的影响。故: ①、找出所有小孩中等级最低的小孩1,分一棵糖,且他左边若 阅读全文
posted @ 2018-10-10 11:47 skillking2 阅读(183) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个数组 gas,代表汽车在此地点可以加油 gas[i];一个数组 cost,代表汽车从此地点到达下一个地点需要耗费的油量 cost[i],设汽车油箱容量无限,求汽车顺时针能绕一圈的起始地点的下标。 二、解答 1、思路: 方法一、 运用两层循环。 第一层循环代表汽车 阅读全文
posted @ 2018-10-09 16:15 skillking2 阅读(281) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个字符串,将其切割后分成的子串全为回文,求最少切几刀。 二、解答 1、思路: 方法一 采用一个 DP 数组记录。 DP[i]:表示到达下标 i 需要切的刀数。 方法二: 采用两个动态数组。 pal[j][i] = true: 从下标 j 到下标 i 是回文。 cu 阅读全文
posted @ 2018-10-09 13:53 skillking2 阅读(137) 评论(0) 推荐(0)
摘要:摘自: https://www.cnblogs.com/DSNFZ/articles/7623522.html https://blog.csdn.net/dm_vincent/article/details/7655764 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成 阅读全文
posted @ 2018-10-08 21:30 skillking2 阅读(159) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个字符串,将其分割成各个子串,使得其子串全为回文,求所有的分割方式。 二、解答 1、思路: 方法一、 采用递归方式进行分割。 ①、递归时,判断当前分割的子串是否为回文,若是,存储该子串,并分割字符串,继续递归剩下的子串; ②、递归跳出条件为: 当前字符串切割的字符 阅读全文
posted @ 2018-10-08 15:23 skillking2 阅读(89) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二维数组,数组中只包含字符 'O'、‘X', 将数组中被 'X' 包围的 'O' 全部换成 'X'。(其中紧邻边界不算包围) 二、解答 1、思路: 方法一、 ①、将紧挨着棋盘边缘的 "O'" 或者与边缘的 "O" 连通的 “O” 全部换成 “1“; ②、将剩下的 阅读全文
posted @ 2018-10-08 13:28 skillking2 阅读(107) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,求其从根节点到叶子节点的所有路径中所经过的节点组成的数值之和。 二、解答 1、思路: 方法一、 采用递归进行 DFS,记录从根节点到叶子节点的所有的路径,在对数值进行累加。 方法二、 采用两个 Queue 进行层次遍历,其中 一个 Queue 记录节点, 阅读全文
posted @ 2018-10-08 10:26 skillking2 阅读(167) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个无序数组,求数组中存在的最长连续的数字序列的个数。 二、解答 1、思路: 方法一、 将数组排序后统计连续数值序列的个数。 方法二、 通过创建一个 Map 存储当前值的连续序列个数。 每次存入新值时,一定要更新此值的边界数值的 value。 方法三、 采用 Set 阅读全文
posted @ 2018-10-07 22:32 skillking2 阅读(141) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断所给的字符串(只考虑数字、字母)是否为回文。 二、解答 1、思路: 方法一、 用 start、end 指针分别从 s 的开头和结尾开始遍历,并进行比较。 方法二、 先采用正则替换掉 s 中的非数字、字母,在翻转 s 与原串进行比较。 阅读全文
posted @ 2018-10-07 21:03 skillking2 阅读(93) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,求一条路径使得其通过的节点数值和最大为多少。 二、解答 1、思路: 方法一、 ①、通过递归 求得 root 左子树的最大和,root 右子树的最大和; ②、采用一个全局变量记录最大节点数之和; ③、跳出递归条件为 root == null; 阅读全文
posted @ 2018-10-07 20:46 skillking2 阅读(112) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个股票的每日价格的数组,可以多次交易,求最大利润是多大。 二、解答 1、思路: 方法一、 求最大利润,从后往前看,若以现在的价格卖出,前一天的价格买入的话,即可完成这次交易,并获得利润。最终统计所有的利润即可。 方法二、 ①、先查找从当前位置开始的最小值 min, 阅读全文
posted @ 2018-10-07 11:33 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个数组,让你先已 val1 买入,再 以 val2 卖出,求获得的利润最大是多少。 二、解答 1、思路: 方法一、 用遍历 min 记录到当前位置的最小值; max 记录到当前数组值的价格卖出为止时获得的最大利润。 优化: 变量 minPrice 直接记录当前的最 阅读全文
posted @ 2018-10-06 22:39 skillking2 阅读(118) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个三角形,找出从顶到底端链接的路径和最短的路径和。 二、解答 1、思路: 方法一、 采用 DP 方式,顶 > 底,确定从顶点到下一行的各个元素的最短路径和,最终返回最后一行的最小值。 方法二、 采用 DP 方式,底 --> 顶,依次确定从底到此一行的各个元素最短路 阅读全文
posted @ 2018-10-06 10:30 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 输出杨辉三角的第 n 行,其中行号从 0 开始。 二、解答 1、思路: 方法一、 直接在一个 List 中计算杨辉三角的每一行。 采用一个 for 循环,每次循环一次就,向 List 头部添加一个元素 1,且 从下标 1 开始,每个元素值变为 val(i) + val( 阅读全文
posted @ 2018-10-05 22:03 skillking2 阅读(110) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 输入一个整数 n, 返回杨辉三角的 n 行。 二、解答 1、思路: 方法一、 利用一次循环,直接计算杨辉三角的一行。再利用一次循环用 List 存储杨辉三角的 n 行。 方法二、 直接在一个 List 中计算杨辉三角的每一行。 阅读全文
posted @ 2018-10-05 21:18 skillking2 阅读(141) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,可能是非完全二叉树,补全每个节点的 next 指针。 二、解答 1、思路: 方法一、 采用三个指针进行依层次补全 next 指针。 阅读全文
posted @ 2018-10-05 20:43 skillking2 阅读(109) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个完全二叉树,添加二叉树的 next 指针指向。 二、解答 1、思路: 方法一、 采用队列进行层次遍历,遍历时添加 next 指针。 方法二、 利用两个指针进行层次遍历,添加 next 指针 方法三、 利用递归实现每一层的 next 指针。 阅读全文
posted @ 2018-10-05 16:57 skillking2 阅读(117) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出字符串 s, 字符串 t;判断 s 中包含 t 的个数,其中 s 中的字符可以间隔包含,但不可以字符交叉包含 t 的字符。 二、解答 1、思路: 方法一、 采用 dp 进行实现。 ①、新建二维数组, dp[t.length()+1][s.length+1],其中 d 阅读全文
posted @ 2018-10-05 16:02 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:1、 采用传统的递归 (O(n)的空间复杂度) 2、采用 Stack + 迭代的方式 (O(n)的空间复杂度) ①、先序遍历 优化: Stack 只用于存储 Right 节点。 ②、中序遍历 优化 ③、后续遍历 a、采用 Stack 进行压栈操作,同时采用一个 Map 记录该节点的右孩子是否被访问过 阅读全文
posted @ 2018-10-05 12:27 skillking2 阅读(308) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,按照先序遍历顺序组成一棵斜右二叉树。 二、解答 1、思路: 方法一、 采用一个栈进行先序遍历,遍历时将节点重新组装。 方法二、 采用递归 递归实现 右-->左-->根 遍历,并拼接原二叉树的节点顺序。 方法三、 采用 Morris Traversal 方 阅读全文
posted @ 2018-10-04 22:10 skillking2 阅读(123) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,求从根到叶节点的所有节点值和为 sum 的路径的所有节点集合。 二、解答 1、思路: 方法一、 采用递归。 深度优先遍历求出所有从根到叶节点的路径,将和为 sum 的进行记录。 方法二、 采用后续遍历的迭代方法,进行记录和为 sum 的所有路径。 注意: 阅读全文
posted @ 2018-10-04 15:55 skillking2 阅读(147) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断所给二叉树是否存在一条从根节点到叶子节点的所有节点值之和为 sum。 二、解答 1、思路: 方法一、 采用递归的方式进行判断。 方法二、 采用 preOrder 的迭代方式进行 DFS 二叉树,若找到, 返回 true。 方法三、 采用 postOrder 的迭代方 阅读全文
posted @ 2018-10-01 18:16 skillking2 阅读(145) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一颗二叉树,求最小高度(根节点到叶节点的最短距离)。 二、解答 1、思路: 方法一、 采用 BFS 层次遍历的方法进行遍历二叉树。同时,若出现叶子节点,则返回当前高度。 方法二、 采用递归。 另外 阅读全文
posted @ 2018-10-01 16:59 skillking2 阅读(143) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,判断其是否是一棵二叉平衡树。 二、解答 1、思路: 方法一、 采用递归; 每次获取 root 结点的左子树、右子树的高度,比较高度差是否小于等于 1; 同时判断左子树、右子树是否也是二叉平衡树。 方法二、 采用深度优先遍历的方式获取深度,并且获取时比较该 阅读全文
posted @ 2018-10-01 16:18 skillking2 阅读(129) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个数值有序的链表,将这个链表的节点组成一个二叉平衡树。 二、解答 1、思路: 采用的是二分查找的思想,利用递归进行实现。 技巧:利用两个指针, slow 每次向前移动一个单位,fast 每次向前移动两个单位,当 fast 为空 或 fast 为要查找的元素时,此时 阅读全文
posted @ 2018-10-01 15:45 skillking2 阅读(78) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个有序的不重复的整形数组,组成一个二路平衡二叉树(左右子树高度差不超过1)。 二、解答 1、思路: 方法一、 采用递归的方式。(像二分查找) ①、为了保持平衡,查找数组的下标中间的数 nums[mid],作为 root; ②、(0, mid - 1) 作为 roo 阅读全文
posted @ 2018-10-01 12:09 skillking2 阅读(133) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二叉树,从下往上输出每一层的节点值。 二、解答 1、思路: 方法一、BFS 利用一个队列进行层次遍历,同时 List 进行插入时,利用 add(index, val) 方法, index 指定插入的 List 的下标。 方法二、DFS 采用递归进行层次遍历,从上 阅读全文
posted @ 2018-10-01 11:08 skillking2 阅读(104) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个不含有重复节点值的二叉树的中序、后序遍历序列,求原二叉树的序列。 二、解答 1、思路: 方法一、 采用递归的方式还原二叉树。 ①、后序遍历的末尾节点为 root 节点,root 节点值在 中序遍历中的节点下标为 inIndex; ②、则中序遍历的 (0, inI 阅读全文
posted @ 2018-10-01 10:31 skillking2 阅读(131) 评论(0) 推荐(0)