09 2018 档案

摘要:一、题目 1、审题 2、分析 给出一个数值不重复的二叉树的先序、中序遍历的遍历顺序,求该二叉树的原始结构。 二、解答 1、思路: 分析二叉树的先序、中序遍历特点如下: ①、先序(preOrder): 根 --> 左 --> 右; ②、中序(inOrder): 左--> 根 --> 右; ③、先序的第 阅读全文
posted @ 2018-09-30 22:46 skillking2 阅读(169) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,输出其最大深度。 二、解答 1、思路: 方法一、 采用递归方式,输出其最大深度。 方法二、 直接在此方法上递归。 方法三、 采用 BFS 广度优先遍历,用一变量记录深度。 方法四、 利用 DFS 深度优先遍历方法; 采用两个栈,一个栈记录节点,另一个栈记 阅读全文
posted @ 2018-09-30 20:12 skillking2 阅读(143) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,以“之"字形层序输出二叉树的结点值。 二、解答 1、思路: 方法一、 采用一个队列进行层次遍历,遍历每一层时,将每一层结点放入一个数组,用一个标志 flag 记录向左或向右的访问顺序,并将符合的层次的结点访问顺序记录在 List 中。 方法二、 采用递归 阅读全文
posted @ 2018-09-30 12:19 skillking2 阅读(101) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二叉树,将每一层节点值放在一个集合中,最终返回每一层节点值的所有集合。 二、解答 1、思路: 方法一、 ①、首先,二叉树父即节点入队列。 ②、队列头结点依次出队列,直到队列为空,并将每次出队列的队头节点放在一个 List 中 ③、若队列为空时,说明这一层所有节点 阅读全文
posted @ 2018-09-28 22:44 skillking2 阅读(112) 评论(0) 推荐(0)
摘要:本文摘自: https://blog.csdn.net/fanrenxiang/article/details/80623884 http://ifeve.com/sun-misc-unsafe/ https://blog.csdn.net/likailonghaha/article/details 阅读全文
posted @ 2018-09-28 20:16 skillking2 阅读(469) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉树,判断其是否对称。 二、解答 1、思路: 方法一、 每次递归判断根节点的左孩子与根节点的右孩子是否相等。 方法二、 新建一个栈空间,根节点的左孩子与根节点的右孩子同时入栈,出栈时出两个栈顶元素,判断其值是否相等。 若相等,在入根左孩子的左孩子与根右孩子的右 阅读全文
posted @ 2018-09-28 14:30 skillking2 阅读(131) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二叉查找树,其中有两个元素的位置弄错了,写算法将其恢复。 二、解答 1、思路: 方法一、 通过中序遍历可以确定一棵二叉查找树由小到大的顺序。 所以在此错位的查找树中查找到的节点中有 1 个比后续节点值大,最后 1 个比前面相邻节点值小。交换这两个结点值即可。 阅读全文
posted @ 2018-09-27 10:56 skillking2 阅读(119) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出三个字符串,判断 s3 是否可以由 s1 与 s2中的字符交错形成。 二、解答 1、思路: 采用一个动态布尔型二维数组 matrix 记录匹配情况。matrix[0][0] 初值为 true。 ①、先初始化 matrix 第一行、第一列。 ②、matrix[i][j 阅读全文
posted @ 2018-09-26 22:39 skillking2 阅读(96) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个二叉树,判断这两个二叉树是否完全相同。 二、解答 1、思路: 方法一、 采用两个队列分别对两个二叉树进行层次遍历。 遍历时比较两个二叉树结点值是否相同。 方法二、 采用一个队列存放 q、p 两个二叉树节点,每次比较时取出两个连续的队头节点进行比较。 方法三、 利 阅读全文
posted @ 2018-09-26 21:58 skillking2 阅读(91) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断所给二叉树是否时一个二分查找树。(left < top < right) 二、解答 1、思路: 方法一、 采用中序遍历,将遍历的节点值放入一个 List 中,再判断 List 中的元素是否时升序的即可。 方法二、 采用中序遍历,直接在便利过程中进行判断是否符合二叉查 阅读全文
posted @ 2018-09-26 21:31 skillking2 阅读(93) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出数值 n, 输出由节点值为 1,2....n 所形成的所有二叉查找树。 二、解答 1、思路: 采用递归实现。 ①、分别假设父结点为 1,2...i...n ,则左孩子为 1,2,..i-1, 右孩子为 i+1,i+2...n。 ②、用列表 left 存储 左孩子的所 阅读全文
posted @ 2018-09-26 19:20 skillking2 阅读(90) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出整数 n ,求 n 个节点能组成多少个不同的二分查找数。 二、解答 1、思路: (引自: https://leetcode.com/problems/unique-binary-search-trees/discuss/31666/DP-Solution-in-6- 阅读全文
posted @ 2018-09-26 16:49 skillking2 阅读(95) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二叉树,中序输出其各节点值。 二、解答 1、思路: 方法一、 采用递归 方法二、 采用一个栈记录节点,根节点先入栈 ①、访问栈顶节点(未出栈),若有左节点则左节点入栈,且将原栈顶节点 left 赋为空。 ②、若左节点为空,则站顶出栈,且右节点入栈。 保持了 左 阅读全文
posted @ 2018-09-26 15:33 skillking2 阅读(141) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给一个只含有数字的字符串,判断其拆分后满足正确 IP 地址格式的所有组合。 二、解答 1、思路: 每个 IP 地址的一项均为 0 ~ 255之间,用 1~3 位数值进行表示,故可以将字符串拆分成四项,且每一项长度为 1~3,再依次判断每项是否为 0 ~ 255 之间,满 阅读全文
posted @ 2018-09-26 14:38 skillking2 阅读(128) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数链表,翻转从第 m 到 n 的所有节点(m <= n)。 二、解答 1、思路: 方法一、用到了 6 个指针变量 ①、新建一个伪头结点,指向 head,且一指针向前移动直到 index == m; ②、若 m <= index <= n ,则将之间的节点插入一 阅读全文
posted @ 2018-09-26 12:00 skillking2 阅读(126) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 每个字母对应一个数字编码,eg A -->1 B -->2 ... Z --> 26 给出一串数字,求可以解码成的共多少中字符可能。 二、解答 1、思路: 采用递推数组进行记录。 阅读全文
posted @ 2018-09-26 11:02 skillking2 阅读(136) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个可能有重复数值的整形数组,求其所有的子集合数组。 二、解答 1、思路: 方法一、 采用递归的方法将所有集合放在一个 List 中; 去重所用的公式: if(i > start && nums[i] == nums[i-1]) continue; 方法二、 将数组 阅读全文
posted @ 2018-09-26 10:52 skillking2 阅读(97) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个正整数 n ,表示二进制的位数,用 List 存储 n 位二进制表示的所有整数,且相邻的两个数均为只有一个二进制位不同。 二、解答 1、思路: 方法一、 ①、用一个 list 存储整数。初始化时 list 中加入 0; ②、循环 n 次,每次循环将 list 中 阅读全文
posted @ 2018-09-25 21:52 skillking2 阅读(139) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出有序整数数组 nums1、nums2,将 nums2 中元素放入 nums1 中,且使得nums1仍然有序,假使 nums1 空间足够大。 二、解答 1、思路: 方法一、 将 nums1 与 nums2 依次进行比较,将小的数放在 nums1 从下标为 0 开始的位 阅读全文
posted @ 2018-09-25 17:34 skillking2 阅读(137) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个字符串,以上述二叉树方法进行拆分、组合。判断两个字符串是否是同一个二叉树拆分、组合而成。 二、解答 1、思路: ①、判断两个字符串中所含字符是否全部相同。 ②、递归判断两个字符串是否满足旋转后相等。 阅读全文
posted @ 2018-09-25 16:40 skillking2 阅读(170) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数链表,和一个目标数 x,将链表中节点值 < x 的节点放在值为 x 节点的左边,且保持链表原来的节点顺序。 二、解答 1、思路: 方法一、 新建两个伪头结点,head1、head2,遍历链表节点: ①、若 val < x,则在 head1 后添加该节点 ②、 阅读全文
posted @ 2018-09-25 11:44 skillking2 阅读(138) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个含有 ‘0‘、’1’ 字符的矩阵,求其中的 ‘1‘ 形成的子矩阵的最大面积。 二、解答 1、思路: 采用三个一维数组: left[cols]: 若该元素为 ‘1‘,则记录此元素以及之前行的形成矩阵的最大左边界。 right[cols]: 若该元素为 ‘1‘,则记 阅读全文
posted @ 2018-09-25 10:35 skillking2 阅读(140) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给一个正整数数组代表高度,且宽度为1,求该数组形成的矩形所能存储的最大容量。 二、解答 1、思路: 方法一: 列举出数组形成的矩形,即可找到最大容量。 即宽度为 1 、2、3......n 的矩形, 其中高度为连续的 i 个整数中最小的一个。 注意(使用 3 层循环,时 阅读全文
posted @ 2018-09-24 21:46 skillking2 阅读(122) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个有序的有重复数值的整形链表,删除重复值的节点,使得每个节点的值只出现一次。 二、解答 1、思路: 同 eg 82,只是保留重复节点数值的一个节点 阅读全文
posted @ 2018-09-24 19:08 skillking2 阅读(104) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个有序的整数链表,其中有重复的数字节点,将重复出现的数字节点全部删除,返回新的链表。 二、解答 1、思路: ①、新建一个伪头结点 fakeHead,next 指向 head,pre 指针指向 fakeHead, cur 指针指向 head; ②、如果 cur 的后 阅读全文
posted @ 2018-09-24 16:11 skillking2 阅读(113) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数数组,数组本来为有序的且可能存在重复整数。 现在将数组后面未知个连续的元素移动到数组前面,形成新的数组。此时,判断 target 是否存在于该新数组中。 二、解答 1、思路: 方法一、 ①、由于数组分成了两部分有序的数字组合,先利用二分查找找到中间数字集合的 阅读全文
posted @ 2018-09-23 22:46 skillking2 阅读(118) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个有序的整数数组,统计总共有多少个元素,其中同一个整数最多只能存在两个,并将统计的所有整数放在数组前头。(只能借助一个额外的空间) 二、解答 1、思路: 方法一、 ①、若数组长度 len <= 2, 则直接返回数组长度。 ②、len > 2时,从下标 i = 2  阅读全文
posted @ 2018-09-23 21:28 skillking2 阅读(131) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、 分析 给出一个二维的字符数组 board,一个字符串 word;在 board 中可以向左右、上下延伸,判断 word 是否可以在延伸中找到。其中 board 中每个字符只能用一次。 二、解答 1、思路: 运用递归的思想进行实现。 开辟一个二维数组的空间用于记录该字符是否被 阅读全文
posted @ 2018-09-23 11:56 skillking2 阅读(201) 评论(0) 推荐(0)
摘要:递归,回溯,DFS,BFS的理解和模板: https://blog.csdn.net/fightforyourdream/article/details/12866861 阅读全文
posted @ 2018-09-23 11:18 skillking2 阅读(201) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数数组,求其所有的不重复的子数组集合。 二、解答 1、思路: 方法一、采用回溯法。 ①、通过确定子集合数组的元素个数进行元素的字典排列。返回的是字典序的有序序列 ②、直接将子集合全部返回并进行回溯。 方法二、直接创建一个 List 存放所有子集,遍历数组; 每 阅读全文
posted @ 2018-09-23 10:38 skillking2 阅读(132) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出整数 n,整数 k,求 1~n 之间的 k 个数字的所有组成。 二、解答 1、思路: 方法一、运用 DFS 方法。 方法二、f(n, k) = f(n-1, k-1) + f(n-1, k) 即: k 个数字中选了 数字 n 和 k 个数字中未选取数字 n 两种情况 阅读全文
posted @ 2018-09-22 23:11 skillking2 阅读(175) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个字符串 s 与 t,求 t 中所有字符在 s 中都出现的最短长度的 s 的一个子串。若 s 中不存在这样的子串,返回空。 二、解答 1、思路: ①、用 HashMap 存储 t 的字符,其中 key 为 字符, value 为出现的次数。 ②、遍历 s 中的字符 阅读全文
posted @ 2018-09-22 22:23 skillking2 阅读(173) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 荷兰国旗问题。用 0,1,2 代表颜色,将数组中的所有的 0 排在前面, 1 排在中间,2排在后面。 二、解答 1、思路: ①、选用三个指针。 left 与 current 指向下标为 0 的元素; right 指向数组末尾。 ②、遍历数组,当 current <= r 阅读全文
posted @ 2018-09-22 09:56 skillking2 阅读(117) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一个二维数组,其中从左到右为升序,且下面一行数值均比上面的大,求所给数值 target 是否存在于数组中。 二、解答 1、思路: 方法一、 先对二维数组的每一行的第一列进行二分查找,在对该列所在的行进行二分查找。 方法二、 将二维数组看成一个有序的一维数组进行一次二分法 阅读全文
posted @ 2018-09-21 22:51 skillking2 阅读(103) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个 mXn 二维矩阵,若 [i][j] 值为 0, 则矩阵第 i 行,第 j 列化为 0。 二、解答 1、思路: 方法一、 矩阵行长为 m,列长为 n,新建两个大小为 m、n的一维数组,用于记录该行、列是否为 0,最终,遍历数组给矩阵赋值即可。 使用额外空间 O( 阅读全文
posted @ 2018-09-21 17:42 skillking2 阅读(154) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个单词字符串,word1 经过字符的删除、替换、插入,最少需要几步才能变为 word2. 二、解答 1、思路: f(i, j) 代表 word1 的前 i 个字符与 word2 的前 j 个字符的最小代价: ①、若 word1[i] == word2[j],则 f 阅读全文
posted @ 2018-09-21 16:39 skillking2 阅读(110) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给一个Unix 的目录结构的字符串表示,将其简化为最简单的目录格式。 .. :代表上一级目录; ///:多个 / 相连时只要保留一个; .: 可以被忽略; 二、解答 1、思路: 将字符串以 '/' 字符进行分割,将分割的有意义目录结构进行入栈。最终出栈构成简化的目录结构 阅读全文
posted @ 2018-09-21 15:30 skillking2 阅读(127) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一次可以跳一步或者2步,求跳到 n 时共有几种跳法。 二、解答 1、思路: 方法一、 采用递归,到 n 级台阶记为 f(n), 则到达 n 级台阶的跳法组成为: f(n) = f(n-1) + f(n-2) ; 注意: 递归算法有许多重复的计算,导致时间超出了。。。。。 阅读全文
posted @ 2018-09-21 14:49 skillking2 阅读(165) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 实现 sqrt(X) 方法,返回的 n 要求是 n*n < x 的最大整数. 二、解答 1、思路: 方法一、 采用二分查找法,查找 n。 方法二、采用 NewTon 迭代法 阅读全文
posted @ 2018-09-21 14:29 skillking2 阅读(138) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个只含有 0、1的二进制数值,求其加法形成的新数组。 二、解答 1、思路: 方法一、 ①、两个指针分别指向 a、b末尾,两个指针由后边向前一起移动,同时所指下标的两个字符作二进制加法,用 StringBuffer进行记录,同时记录是否有进位。 ②、最终会有一个字符 阅读全文
posted @ 2018-09-21 11:21 skillking2 阅读(133) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数数组,代表一个整数,其中第一个元素为最高位。求该数组代表的数字值加一后形成的新数组。 二、解答 1、思路: 从后向前遍历数组,且元素值 +1, ①、若 +1 后数值 < 10,则直接赋该元素值 +1,返回数组。 ②、 若 +1 后数值 = 10,代表需要进位 阅读全文
posted @ 2018-09-21 10:44 skillking2 阅读(131) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断所给字符串是否可以转化为小数类型。 二、解答 1、思路: 多层判断,转化为小数类型,可以很巧妙的采用多个 flag 进行记录是否符合浮点数定义: ①、"+" 或 “-” 符号只能出现在开头或则 e 的后一个字符 ②、e 前边得有数字、后边得有整形数字 ③、只能出现一 阅读全文
posted @ 2018-09-21 10:23 skillking2 阅读(182) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个 mXn 方格,求从左上角到右下角经过的路线中数值和最小的那条路径的路径和。(只能向右、向下移动) 二、解答 1、思路: 方法一、 新建一个一维数组 dp 用于记录到达此格点的最小路径和。遍历所给二维数组 grid: ①、当遍历的是第一行时, dp[i] = g 阅读全文
posted @ 2018-09-21 09:46 skillking2 阅读(139) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 只能向下、向右移动的机器人,移动过程中数值为 1 代表有障碍,不能走这一格,求到达右下角共有几种走法。 二、解答 1、思路: 方法一、 新建一个数组 dp[],从第一行开始遍历二维数组的每一行,dp[i] 用于记录这一行的第 i 个空格共有几种走法。 遍历时,若二维数组 阅读全文
posted @ 2018-09-20 22:59 skillking2 阅读(106) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求一个只能向下、向右的物体到达坐标 (m,. n)共有几种走法。 二、解答 1、思路: 方法一、 物体到达(m, n)的方法,可以化解为 (m-1, n) + (m, n-1),所以可以化为 如下: 阅读全文
posted @ 2018-09-20 21:32 skillking2 阅读(128) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个链表,一个参数 k,将链表的后边 k 个节点移动到左边来。(其中 k 可能大于链表长度) 二、解答 1、思路: ①、获得链表长度 total ,同时记录末尾节点 endNode。则 k = k % total 即为需要移动的后边部分的节点数,则 leftStep 阅读全文
posted @ 2018-09-19 17:43 skillking2 阅读(164) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给两个数字 n 与 k,返回 1-n 所有数字组成的从小到大的全排序的第 k 个数。 二、解答 1、思路: 方法一、采用字典序列,返回全部序列后,输出第 k 个。(时间超出,但代码可行) 方法二、采用数学的思维方法: 以 n = 4, k = 9 为例: ①、总共有 n 阅读全文
posted @ 2018-09-18 14:09 skillking2 阅读(160) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给一个正整数 n,生成 nXn 的矩阵数组,其中数组值为从 1 开始的旋转增加的数值。 二、解答 1、思路: 与 54 题思路类似。 ①、从左向右、右向左时需要判断 top 是否小与 bottom; ②、从上到下、下到上时需要判断 left 是否 小与 right。 注 阅读全文
posted @ 2018-09-17 10:29 skillking2 阅读(115) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个字符串,其中的单词用空格字符间隔,求最后一个单词的长度。 二、解答 1、思路: 方法一、从前向后遍历,用一个初始值为0的变量 lastWordLen 记录长度,当出现空格时 lastWordLen = 0;最终返回 lastWordLen 即可。 注意: 所给字 阅读全文
posted @ 2018-09-17 10:01 skillking2 阅读(145) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一组不重叠的间隔数字组成的数组,将一个新的间隔数组插入原来的数组,有重叠的部分则进行合并。 二、解答 1、思路: 方法一、将 newInterval 插入原来的 List,再将 List 的数组进行重叠部分的合并。 方法二、 将 newInterval 与原 Lis 阅读全文
posted @ 2018-09-17 09:26 skillking2 阅读(135) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个装有间隔数字的数组组成的 List(List中数组是无序的),将有重叠部分的数组进行合并。 二、解答 1、思路: 先将 List 中数组根据 start 进行排序,再依次判断是否有重叠(比较前一个的 end 与后一个的 start),再进行合并。 阅读全文
posted @ 2018-09-16 11:00 skillking2 阅读(106) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给一个非负数组,数组值代表在此位置上的最大跳跃的步数。判断是否可以到达数组的末尾。 二、解答 1、思路: 采用变量 curMax 代表在 index < i 时能跳跃的最大距离,则当 curMax < i 时代表 无法到达位置 i ,即返回 false; 阅读全文
posted @ 2018-09-16 09:41 skillking2 阅读(101) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个 mXn 的二维数组,旋转着输出数组元素。 二、解答 1、思路: 从左向右、右向左时要判断列越界问题; 从上向下、下向上要判断行越界问题; 阅读全文
posted @ 2018-09-15 18:07 skillking2 阅读(87) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个整形数组(可能全是负数),求连续的子数组的最大的和。 二、解答 1、思路: 方法一、动态规划 令 maxNum 代表最大和,tmpMaxNum 代表临时最大和。 当向后扫描时,对第 j 个元素有两种选择,要么放入前面的子数组,要么作为新数组的第一个元素; 如果 阅读全文
posted @ 2018-09-15 14:39 skillking2 阅读(112) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 输入数字n, 求 n-皇后问题存在几个解。 二、解答 1、思路: 同上一题,只是采用一个参数对解的个数进行记录,最终 DFS 返回的即为所求解个数。 阅读全文
posted @ 2018-09-15 11:34 skillking2 阅读(130) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: n-皇后问题: 一个 n X n的棋盘,其中,每一行、每一列、每一斜行、每一反斜行都不能有重复的皇后,输出所有的可能。 二、解答 1、思路: 典型的回溯思想,运用 DFS 方法进行求解。其中: ①、斜行: [i-1][j-1] ②、 反斜行: [i-1][j+1] 阅读全文
posted @ 2018-09-14 11:17 skillking2 阅读(140) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 实现 pow(x, n) 方法,计算 x 的 n 次方; 其中 -100 < x < 100; n 的范围是有符号整形,即 -2147483648 < n < 2147483647; 二、解答 1、思路: 若依次相乘, n--,则会时间溢出。 方法一、利用 x*x 时 阅读全文
posted @ 2018-09-12 16:09 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个字符串数组,将其中字符串中所含字母相同仅仅顺序不同的字符串归为一类,记录所有分类。 二、解答 1、思路: 方法一、利用 Java 封装的方法进行实现: ①、将字符串元素转为字符数组,进行排序,后重新转为有序的字符串; ②、新建一个 Map<String, Li 阅读全文
posted @ 2018-09-12 15:26 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个二维数组代表的矩阵,求得矩阵顺时针旋转90度后的新矩阵。 二、解答 1、思路: 方法一、观察可知,原矩阵与新矩阵的对应关系如下: ①、原矩阵的列 == 新矩阵的行; ②、原矩阵的行 + 新矩阵的列 == 矩阵的最大行号 故借助一个二维数组可以实现 方法二、不申 阅读全文
posted @ 2018-09-12 13:34 skillking2 阅读(111) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个有重复数字的整形数组,求其全排序。 二、解答 1、思路: 方法一、在上一题的递归基础上,加上过滤条件。 例如:对于 112, ①、将1固定在第一位,求后边的12的排序; ②、此时应将第二个 1 固定在第一位,但是,与①重复,过滤掉; ③、将 2固定在第一位,求 阅读全文
posted @ 2018-09-12 11:18 skillking2 阅读(92) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 输入一个不重复整形数组,求他的全排序 二、解答 1、思路: 方法一:利用递归实现全排序,先固定第一个值,在对后边全排序...最终当固定的值为最大下标时,则此时即得一排序。 方法二: 将数组排成升序后,依次求得比这一个数组数字大的下一个数字数组,最终这些所有的字典序的数 阅读全文
posted @ 2018-09-12 10:17 skillking2 阅读(145) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个整形数组,数值对应在该下标可以向前跳动的最大步数,求跳到数组末尾的最小步数。 二、解答 1、思路: ①、利用广度优先算法BFS, 设置变量 step 代表步数, e 代表当前这一步(下标 i)到达的最远距离(即数组的下标), max 记录在下标 i 到达e之前 阅读全文
posted @ 2018-09-10 11:47 skillking2 阅读(268) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 判断两个字符串是否匹配,其中 p 中的特殊字符 ‘?’可以匹配任意一个字母, ‘*’ 可以匹配 0 个或多个不同的连续字符。 二、解答 1、思路: ①、定义两个指针,pIndex 指向 p 的下标, sIndex 指向 s 的下标; 再定义两个指针,pStarInde 阅读全文
posted @ 2018-09-08 21:43 skillking2 阅读(147) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给定两个字符串,字符串形式为非负整数。在不使用 BigInteger 以及不把其转为 int 形式下 求该两数的乘积,返回结果为字符串。 二、解答 1、思路: 分析可知,num1 下标为 i 的数字与 num2 下标为 j 的数字相乘,所得的乘积为二位数字,且所在下标 阅读全文
posted @ 2018-09-08 10:49 skillking2 阅读(125) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一组整数坐标,代表在 x 轴上的单位为1的木块的高度,求得这些木块之间最多可以积多少水。 二、解答 1、思路: 方法一:a、求出最高的木块的高度,记其下标为 index; b、求 index 左方最高木块的下标, secondIndex;并可以求出 secondI 阅读全文
posted @ 2018-09-07 09:38 skillking2 阅读(99) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 在时间复杂度为 O(n)条件下求出数组中所缺失的最小正整数。 二、解答 1、思路: 数组大小为 n, 则所缺失的正整数范围 为 1~n+1;考虑将下标为 i 的位置放入对应大小为 i +1 的元素,则最终遍历时查找下标 i 对应的元素不是 i + 1则为缺失的最小正整 阅读全文
posted @ 2018-09-03 22:04 skillking2 阅读(95) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个可以有重复数字的数组,一个目标数字 target,求数组中的所有和为 target 的数字组合,其中数组中每个元素只能用一次。 二、解答 1、思路: 利用DFS方法,其中,可以用 while(i + 1 < candidates.length && candi 阅读全文
posted @ 2018-09-03 21:11 skillking2 阅读(109) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析: 给出一个不重复的数字数组,一个目标数字target,求数组中的元素组合所得的和为 target 的所有组合,其中数组中的元素可以多次使用。 二、解答 1、思路: 利用递归算法求得所有组合。 阅读全文
posted @ 2018-09-03 20:46 skillking2 阅读(97) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 ①当 n = 1, 输出 1, ② n = 2, ①读作 1个1,输出 11 ③ n = 3, ②读作2个1,输出 21 ④ n = 4, ③读作1个2,1个1,输出 1211 ⑤ n = 5, ④读作1个1,1个2,2个1,输出 111221 ... 二、解答 1、思 阅读全文
posted @ 2018-09-03 19:51 skillking2 阅读(226) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 将所给的数独棋盘补充完整。 二、解答 1、思路: 利用上一题的判断数独是否正确。依次在数独棋盘中的空位补充‘1’ -‘9’,递归判断是否符合,若符合则继续下一个空位;若不符合,则空位还原。 阅读全文
posted @ 2018-09-03 17:21 skillking2 阅读(191) 评论(0) 推荐(0)