一:解题思路 方法一:之前做过一道合并2个链表的题目,那么第一种方法就是将数组中的链表两两合并,得到最后的结果。Time:O(k*n),Space:O(1) 方法二:采用分治法,两两合拼。不断递归,最后只剩下一个链表。Time:O(n*log(k)),Space:O(log(k)) 二:完整代码示例 ...
分类:
其他好文 时间:
2020-04-13 22:48:50
阅读次数:
75
传送门 解题思路: 一道比较有趣的题,解题工作主要分为两块: ①找出k(k=0表示小A先走,k=1表示小B先走,下面同理)从点i出发下一个到达的点to[k][i]; 一开始偷懒用了vector(偷懒一时爽),由于vector的erase操作是o(n)的,这个预处理时间复杂度就彪到o(n2)了。这里改 ...
分类:
其他好文 时间:
2020-04-13 20:01:35
阅读次数:
94
题目描述 "21.合并两个有序链表" 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题目解析 方法一:递归 解题思路 我们直接采用递归的方法,首先判断其中一个链表是否为空,若为空则无需进行递归比较直接返回结果。否则比较链表 l1 和链表 l2 的头元素 ...
分类:
其他好文 时间:
2020-04-12 18:46:22
阅读次数:
50
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0 1 1 1 解题思路:最开始的时候,我的思路是遍历所 ...
分类:
其他好文 时间:
2020-04-12 16:32:20
阅读次数:
50
题目 给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。 如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ,那么字符串 words[i] 就是 words[j] 的一个子 ...
分类:
编程语言 时间:
2020-04-12 14:47:20
阅读次数:
74
时间复杂度O(n2),空间复杂度应该是O(n) 题目 解题思路 1. 排序,就可以按顺序来对比知道有没有那个字母和够不够用了; 代码思路 1. 排除特殊情况; 2. 用两个vector存起两个string; 3. 排序; 4. 循环遍历赎金信,record记录对比杂志magazine相应位置时要后移 ...
分类:
其他好文 时间:
2020-04-12 14:39:27
阅读次数:
76
时间复杂度O(m n),空间复杂度不会分析。。。 题目 给你一个待查数组 queries ,数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i](从 i=0 到 i=queries.length 1): 一开始,排列 P=[1,2,3,...,m]。 对于 ...
分类:
其他好文 时间:
2020-04-12 14:32:43
阅读次数:
58
一:解题思路 方法一:Time:O(m*n),Space:O(m*n) 方法二:Time:O(m*n),Space:O(1) 二:完整代码示例 (C++版和Java版) 方法一C++: class Solution { public: int uniquePathsWithObstacles(vec ...
分类:
其他好文 时间:
2020-04-12 14:24:12
阅读次数:
46
解题思路:先计算左右子树的高度,如果满足平衡二叉树左右子树的高度差的绝对值不超过1,则返回该树的高度,否则返回-1表示子树已经不平衡了.给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树[3,9,20,null,null,15,7]3/\920/\157返回true。classSolution
分类:
其他好文 时间:
2020-04-11 22:20:22
阅读次数:
101
一:解题思路 方法一:利用动态规划的思想来做,用一个二维数组d[m][n]来表示每个格子的路径数量。对于第一行:d[0][j]=1。对于第一列:d[i][0]=1。对于其他位置的路径数量。d[i][j]=d[i-1][j]+d[i][j-1]。Time:O(m*n),Space:O(m*n) 方法二 ...
分类:
其他好文 时间:
2020-04-11 18:16:09
阅读次数:
68