11 2018 档案

摘要:一、题目 1、审题 2、分析 给出一个二维数组,给出两个坐标。求这两个坐标之间的所有元素的和。 二、解答 1、思路 ①、 新建一个数组 sums[rows + 1][cols + 1],其中元素 sums[i+1][j+1] 用于储存 matrix 中从 [0, 0] 到 [i][j] 之间的元素和 阅读全文
posted @ 2018-11-29 22:05 skillking2 阅读(142) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,返回从下标 i 到 j 的元素之和。 二、解答 1、思路 ①、新建一个数组,如下标 i : 存储下标 0 ~ i 的元素之和。 ②、最终返回 nums[j] - nums[i]; 阅读全文
posted @ 2018-11-28 16:49 skillking2 阅读(125) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个包含 '('、')' 的字符串,去除最少的字符,使得左右括号能正确闭合。求出所有的正确闭合的字符串。 二、解答 1、思路 https://leetcode.com/problems/remove-invalid-parentheses/discuss/75027 阅读全文
posted @ 2018-11-28 16:36 skillking2 阅读(275) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 将二叉树的结构序列化为字符串形式表示,在通过这个字符串形式将此二叉树的结构展示出来! 二、解答 1、思路 序列化过程: 将二叉数以先序遍历的方式展示,并且使用 “X” 代表一个 null 节点,而且每个节点之间采用 “,”隔开。可以采用一个 StringBuilder 阅读全文
posted @ 2018-11-27 16:21 skillking2 阅读(151) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个无序的整形数组,求其中递增的最大序列的元素个数。 二、解答 1、思路 方法一、 采用 dp 数组,长度为 nums 的元素个数。 ①、dp[index] 记录当前下标 index 对应元素与前边的数组元素组成的最大递增序列的个数。 ②、dp 所有元素初始化为 1 阅读全文
posted @ 2018-11-27 16:05 skillking2 阅读(132) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 两个字符串数字中,位置相同且数字相同则 bull++;位置不同但数字相同则 cow++;统计 bull、cow 个数。 二、解答 1、思路 采用两个整形数组,num1[10], num2[10]; 遍历 secret、guess 相同位置的字符。 若字符相同 则 bul 阅读全文
posted @ 2018-11-26 15:38 skillking2 阅读(124) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给定一个数组,记载了某研究人员的文章引用次数(每篇文章的引用次数都是非负整数),编写函数计算该研究人员的h指数。 根据维基百科上对h指数的定义:“一名科学家的h指数是指在其发表的N篇论文中,有h篇论文分别被引用了至少h次,其余N-h篇的引用次数均不超过h次”。 例如,给 阅读全文
posted @ 2018-11-26 14:48 skillking2 阅读(214) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 实现一个数据结构,可以添加整形元素,并可以返回排序后的中位数。 二、解答 1、思路 采用两个 PriorityQueue。 ①、采用两个 PriorityQueue,PriorityQueue 具有对元素进行自动排序的功能。 ②、一个为 maxQueue,记录比中位数大 阅读全文
posted @ 2018-11-25 16:33 skillking2 阅读(169) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 你先选,能选 1~3个砖头,对手在选 1~3个砖头。若你和对手都很聪明,且能拿到最后一块砖头的人胜利,给出砖头总数 n,求你是否能赢。 二、解答 1、思路 由于是我们先拿,那么3个以内(包括3个)的石子,我们直接赢,如果共4个,那么我们一定输,因为不管我们取几个,下一个 阅读全文
posted @ 2018-11-25 15:29 skillking2 阅读(122) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出两个字符串,判断两个字符串的元素排列规则是不是一样。 二、解答 1、思路 方法一、 采用 Map<Character, String> 将 pattern 的字符作为 Key,str 切分成单词数组 arr,单词作为 Value。 若 pattern中字符数与 st 阅读全文
posted @ 2018-11-25 10:39 skillking2 阅读(144) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 编程实现 “LIFE” 这个游戏: ①、若 m 的周围8个邻居细胞中存活的细胞数 < 2,则此细胞从存活状态变为死亡状态; ②、若 m 的周围8个邻居细胞中存活的细胞数 = 2 或 = 3,则此细胞从存活状态变为存活状态; ③、若 m 的周围8个邻居细胞中存活的细胞数 阅读全文
posted @ 2018-11-24 22:26 skillking2 阅读(219) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 一个长度为 n+1 的整形数组,元素值为 1~ n 之间。其中一个元素重复了多次,其他元素只出现一次。求出多次出现的那个元素。 二、解答 1、思路 类似: 142. Linked List Cycle II //这道题的关键在于0处是没有索引指向的,将数组视为静态链表, 阅读全文
posted @ 2018-11-23 22:29 skillking2 阅读(147) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,将 0 全部提到后边,并保持非 0 元素的排列顺序。 二、解答 1、思路 方法一、 采用两个指针,index1 指向 第一个 0 的下标。i 指向新出现的元素的下标。 若 nums[i] = 0,则 i++; 若 nums[i] != 0, 且 i ! 阅读全文
posted @ 2018-11-23 21:20 skillking2 阅读(132) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出正整数 n,判断 n 由几个平方数的和构成。 二、解答 1、思路 方法一、 动态规划! ①、创建大小为 n + 1 的数组。其中,初始化时 dp[0] = 0,其他元素值为 Integer.Max_VALUE。 ②、之后,依次给 dp 从 1 开始的下标元素进行赋值 阅读全文
posted @ 2018-11-22 22:20 skillking2 阅读(163) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求出一个数组中连续的元素中缺失的那一个。 二、解答 1、思路 方法一、 将数组中的元素与下标进行对应。最终与下标不一致的元素即为缺失德那一个。 方法二、 采用异或 ^ 运算符。将下标与元素值一起做 ^ 操作。出现了两次的元素最终会被消去,只剩下要求的出现一次的元素。 方 阅读全文
posted @ 2018-11-22 13:30 skillking2 阅读(179) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 输出第 n 个 ugly 数值。 二、解答 1、思路 ①、新建一个大小为 n 的数组 arr,存放自小到大的 ugly 数,且 arr[0] = 1。 ②、采用三个指针t2、t3、t5,代表 2、3、5的指向,起始分别指向数组下标 0;且 arr[i] = Math.m 阅读全文
posted @ 2018-11-21 22:34 skillking2 阅读(196) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数 num,若其大于0 且素数因子只含有 2、3、5 则判定为 ugly 数。判断 num 是否为 ugly 数。 二、解答 1、思路 若num 取余 2、3、5为 0, 则 num / (2、3、5)。若最终 num 为 1,则 为 ugly 数 阅读全文
posted @ 2018-11-21 22:05 skillking2 阅读(140) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 在线性时间复杂度、常量空间开销的情况下统计出一个整形数组中只出现一次的两个数(其他的数都是出现2次)。 二、解答 1、思路 ①、对数组所有元素进行异或(^) 操作,得到只出现 1 次的这两个数的异或结果 diff。 ②、diff &= -diff ,得到只出现一次的两个 阅读全文
posted @ 2018-11-20 15:43 skillking2 阅读(159) 评论(0) 推荐(0)
摘要:一、& 与 a & -a : 可以计算出 a 的二进制形式的第一个 1 出现的位置。 eg: 6 & -6 = 0110 & 1010 = 0010 阅读全文
posted @ 2018-11-20 15:37 skillking2 阅读(191) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个运算式的字符串,求加上括号后的所有可能结果。 二、解答 1、思路 采用递归方式。 碰到操作符后就将运算式分为前后两部分,递归调用此方法算出前后两部分的所有运算结果。在根据此操作符将前后两部分的结果进行操作。最终将结果存于 List中进行返回。 可以通过一个 Ma 阅读全文
posted @ 2018-11-20 14:51 skillking2 阅读(204) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整数,将每一位相加直到出现的和为每一个位数的数字相同,然后返回每一个位数的数值相加的和。 二、解答 1、思路 这样的问题,有一个结论: result = 1 + (num - 1)% 9; 阅读全文
posted @ 2018-11-19 22:03 skillking2 阅读(133) 评论(0) 推荐(0)
摘要:因为老板要我爬网易云的数据,要对歌曲的评论进行相似度抽取,形成多个歌曲文案,于是我就做了这个爬虫!在此记录一下! 一、分析网易云 API 为了缓解服务器的压力,网易云会有反爬虫策略!我打开网易云歌曲页面, F12 发现看不到我要的数据,明白了!他应该是到这个页面在发送请求获取的歌词、评论信息!于是我 阅读全文
posted @ 2018-11-14 20:17 skillking2 阅读(2949) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个二维数组,每一行的元素、每一列的元素均有序。在此数组中查找 target 元素。 二、解答 1、思路 方法一、 在每一行中用二分查找法。 方法二、 从二维数组的右上角开始向前、向下定位: ①、若 target 小于当前元素,则 target 不可能在当前列,因为 阅读全文
posted @ 2018-11-11 17:45 skillking2 阅读(146) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,一个窗口大小 k,此窗口每次包含 k 个连续元素,依次向后移动,将每次窗口中的最大元素进行记录。 二、解答 1、思路 方法一、 采用双端队列 Deque 存储每次窗口中最大元素的下标 i,且队列中存储的下标是依次增大的。 ①、循环判断队列中元素值 < 阅读全文
posted @ 2018-11-11 16:53 skillking2 阅读(161) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,用另一个数组存储所给数组的除去当前下标元素外的所有元素的乘积。尝试用 O(n) 时间复杂度,常数额外空间。 二、解答 1、思路 方法一、 ① 新建数组 result,使用循环,为 result 赋值, result[i] = nums[0] * num 阅读全文
posted @ 2018-11-10 22:26 skillking2 阅读(85) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求二叉树中 p、q 节点的最小共同祖先节点。 二、解答 1、思路 方法一、 采用循环查找。 ①、若 root 为 p 或者 q ,则返回 root ②、若 p、q 分布在 root 不同的左右子树,则返回 root ③、若 p、q 均为 root 左子树,则 root 阅读全文
posted @ 2018-11-10 14:28 skillking2 阅读(157) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二叉查找树中的两个节点,求出这两个节点的最小共同祖先。 二、解答 1、思路 方法一、 当 p、q 中的一个是 root 节点时,或者 p、q 一个为root 左子树节点,一个为右子树节点,则 root 才是 他们的共同最小祖先。 方法二、 p、q一个为左孩子、一 阅读全文
posted @ 2018-11-09 16:53 skillking2 阅读(151) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、判断链表中的节点结构是否是回文形式。 二、解答 1、思路 ①、采用两个指针 fast、slow向后移动,最终 slow 移动到了中间的位置(可能右边节点数多 1 个) ②、将 slow 右边的所有节点进行翻转,最终 slow 指向右端的起始节点,fast 指向 head ③、 阅读全文
posted @ 2018-11-09 16:09 skillking2 阅读(124) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 使用栈来实现队列的功能。 二、解答 1、思路 方法一、 只修改 Pop 方法,使得栈中元素排序为队列的规则。 方法二、 使用两个 Stack,input、output。 push: 压入 input 栈。 pop、peek: 若 output 不为空,则对 output 阅读全文
posted @ 2018-11-08 17:32 skillking2 阅读(120) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断给出的数值是否为 2 的幂次方。 二、解答 1、思路 方法一、 采用 n & (n-1)每次消掉 n 最右边一个 1 的特点。而 2 的幂次方的二进制形式都是只包含一个 1. eg:2、4、8、16、、、 方法二、 正整数中,2 的幂次方最大为 2 << 30。 判 阅读全文
posted @ 2018-11-08 17:01 skillking2 阅读(114) 评论(0) 推荐(0)
摘要:一、n-1发生了什么 ①、二进制数 n 变成 n-1 后,如果最后一位是 0,将向前一位借 2,2-1=1。最后一位为1。如果前一位为0,将继续向前一位借2,加上本身少掉的1.则变为1。一直遇到1。减为0. 所以 二进制 xxxx10000 - 1 = xxxx01111 ②、n&n-1 按照上述 阅读全文
posted @ 2018-11-08 16:51 skillking2 阅读(4394) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一棵二分查找树,求出其中第 k 小的节点数值。 二、解答 1、思路 方法一、 使用 Stack 进行中序遍历。若常访问,则可以采用一个 List 存储。 方法二、 采用二分查找。 ①、先统计左子树长度 m,若 k < m + 1,则要查找的元素在左子树中。 ②、若 阅读全文
posted @ 2018-11-08 11:43 skillking2 阅读(147) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个整形数组,统计其中元素出现次数超过数组长度 1/3 的元素。 二、解答 1、思路 方法一、 采用一个 Map 统计元素出现的次数。 方法二、 Boyer-Moore majority vote algorithm(摩尔投票算法) 这是一种在线性时间O(n)和空间 阅读全文
posted @ 2018-11-07 21:19 skillking2 阅读(115) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出一个有序的无重复的整形数组,返回一个描述数组‘概要’的字符串 List。 二、解答 1、思路 方法一、 采用两个指针记录前后的元素是否连续。 方法二、 直接以当前元素为每一个组合的起始,求出每一个组合。 阅读全文
posted @ 2018-11-07 20:21 skillking2 阅读(129) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出包含 +、-、*、/ 以及空格、数字的正确的数学计算式,求出其正确答案。 二、解答 1、思路 新建一个栈,存放所有的带符号的数值,其中 出现 +、- 号时作为下一个数值的符号; 当出现 * / 号时,从栈中出栈一个数值与下一个数值进行运算后入栈。 最终将栈中所有数值 阅读全文
posted @ 2018-11-07 17:16 skillking2 阅读(141) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出字符串表示的包含有 +、-、( 、) 运算符以及空格、数字的整形运算,求出其结果。 二、解答 1、思路 循环遍历 S 中的字符 c: ①、当 c == 数字:将与其相邻的数字组合成整数。 ②、当 c == ‘+’ : 前一个操作数输入完毕,开始新的运算,且为加法运算 阅读全文
posted @ 2018-11-07 15:47 skillking2 阅读(132) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求一棵完全二叉树的节点个数。 二、解答 1、思路 方法一、 将二叉树将 root 节点分为左右两颗子树。 ①、若右子树的高度 小于 左子树的高度,则此完全二叉树的最后一个节点落于 左子树,则右子树是一棵高度为 h - 2 的完全二叉树; 节点数等于 1 << h - 2 阅读全文
posted @ 2018-11-05 21:32 skillking2 阅读(116) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出二维空间中两个矩形的坐标,求这两个矩阵的总面积。(注意重叠部分) 二、解答 1、思路 首先计算两个矩阵s1, s2 的面积,在计算重叠部分的面积。 重叠部分,可能是 s1 与 s2 的包含关系,或者部分包含、或者矩阵 s1 为一个点。 阅读全文
posted @ 2018-11-05 16:44 skillking2 阅读(108) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 求出只包含字符 0 、 1 的二维矩阵中的 1 形成的最大正方形的面积 二、解答 1、思路: 方法一、 动态规划,采用二维数组 dp[][],dp[i][j] 表示在位置 [i][j] 作为右下角顶点所形成的正方形的最大边长。 动态规划方程为: if(matrix[i] 阅读全文
posted @ 2018-11-04 20:55 skillking2 阅读(183) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断数组中是否存在两个元素之差在 t 之内,且此两个元素下标之差在 k 之内。 二、解答 1、思路: 方法一、 桶排序 ①、采用 Map ,key 记录桶的序号,value 记录元素的值。每个桶的元素个数为 t + 1, eg t=3,则桶大小为 4, 元素 0、1、2 阅读全文
posted @ 2018-11-03 22:23 skillking2 阅读(147) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断数组中是否存在两个值相同的元素,下标之差 <= k 二、解答 1、思路: 使用 Set 将数组的前 k 个元素添加入 Set,若有添加失败情况,则返回 true; 之后每次将 set 中的前面第 i - k - 1 个元素从 Set 中去除,并添加入新的元素,若添加 阅读全文
posted @ 2018-11-03 21:22 skillking2 阅读(96) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 判断一个数组中是否有重复的元素 二、解答 1、思路: 方法一、 先排序,在判断 方法二、 使用优先队列 PriorityQueue 对数组进行排序 方法三、 使用选择排序对数组进行排序,在判断。 注意: 为了提高选择排序的效率(即避免基本有序时的最坏情况),可以先对数组 阅读全文
posted @ 2018-11-03 21:21 skillking2 阅读(96) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 给出数值 k 代表可以使用 1~9 中的 k 个不同数字,n 代表这 k 个数字的和。求所有符合的组合。 二、解答 1、思路: 采用 DFS 阅读全文
posted @ 2018-11-02 11:19 skillking2 阅读(149) 评论(0) 推荐(0)
摘要:一、题目 1、审题 2、分析 在一个无序的整形数组中找出第 K 大的元素。 二、解答 1、思路: 方法一、 排序后直接返回。 方法二、采用 PriorityQueue PriorityQueue 对进入的元素进行排序,每次出队的都是最小的元素; 方法三、 1、对数组采用快速排序,确定第一个元素在有序 阅读全文
posted @ 2018-11-01 22:06 skillking2 阅读(126) 评论(0) 推荐(0)