![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode2020每日一刷活动
Leecode2020年3月每日一刷活动代码记录。
PandaDou
啥都别说了,学吧......
展开
-
Leetcode2020每日一刷活动目录
3.2 反转链表(迭代和递归)3.3 合并排序的数组(思路)原创 2020-03-03 11:56:25 · 104 阅读 · 0 评论 -
202.快乐数
题目编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。思考看到这道题,第一时间不能确定的是,循环的终止条件。因为计算个位的平方和是简单的,知道了怎么停下来,这道题就解完了。看了下题解,主要的思想是,证明求平方和的这个过程,是循环的,当发现循环的原创 2020-06-21 00:07:31 · 159 阅读 · 0 评论 -
3.19 最长回文串
题目给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意假设字符串的长度不会超过 1010。示例1输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路构造回文串,回文串有两种,中间两个元素相同的,或者中间只...原创 2020-03-19 20:50:36 · 103 阅读 · 0 评论 -
3.18 矩形重叠
题目矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例1输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例2输入:rec1 =...原创 2020-03-19 20:45:32 · 96 阅读 · 0 评论 -
3.17 拼写单词
题目给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例1输入:words = ["...原创 2020-03-19 20:38:47 · 98 阅读 · 0 评论 -
3.16 字符串压缩
题目字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"...原创 2020-03-19 20:33:38 · 137 阅读 · 0 评论 -
3.15 岛屿的最大面积
题目给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例1[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1...原创 2020-03-15 18:48:48 · 62 阅读 · 0 评论 -
3.14 最长上升子序列
题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路一O(n2)O(n^2)O(n2)用一个数组记录以每一个数字结尾的序列的最长上升子序列的长度。对于当前位置,遍历之前的每一个数字,每找到比自己小的数,就得到一个一个上升子序列,取最长...原创 2020-03-15 18:41:37 · 78 阅读 · 0 评论 -
3.13 多数元素
题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1输入: [3,2,3]输出: 3示例2输入: [2,2,1,1,1,2,2]输出: 2思路一使用一个map,遍历一遍数组,记录每个数字出现的次数。再遍历一遍,找到第一个出现次数大于 ⌊ n/2 ⌋ 的...原创 2020-03-15 18:11:15 · 76 阅读 · 0 评论 -
3.12 字符串的最大公因子
题目对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例1输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例2输入:str1 = "ABABAB", str2 = "ABAB"输出:"AB"...原创 2020-03-12 21:03:20 · 72 阅读 · 0 评论 -
3.11 将数组分成和相等的三个部分
给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例1输出:[0,2,1...原创 2020-03-11 11:28:30 · 135 阅读 · 0 评论 -
3.10 二叉树的直径
题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之...原创 2020-03-10 11:02:44 · 121 阅读 · 1 评论 -
3.9 买卖股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...原创 2020-03-10 10:59:09 · 64 阅读 · 0 评论 -
3.8 零钱兑换
题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例1输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例2输入: coins = [2], amount = 3输出: -1思路回溯法d...原创 2020-03-08 16:34:32 · 88 阅读 · 0 评论 -
3.7 队列的最大值
题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例1输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_valu...原创 2020-03-07 10:28:00 · 119 阅读 · 0 评论 -
3.6 和为s的连续正数序列
题目输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例1输入:target = 9输出:[[2,3,4],[4,5]]示例2输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]思路滑动窗口的思想。使用两个指针起始指向数字1、2。...原创 2020-03-06 09:44:37 · 120 阅读 · 0 评论 -
3.5 分糖果 II
题目排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复上述过程(每次都比上一次多给...原创 2020-03-05 09:36:03 · 112 阅读 · 0 评论 -
3.1 用队列实现栈
题目使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 de...原创 2020-03-04 15:02:15 · 121 阅读 · 0 评论 -
3.4 腐烂的橘子
题目在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例1输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例2输入:[[2,1,1],[0...原创 2020-03-04 11:48:05 · 141 阅读 · 0 评论 -
3.2 反转链表
题目反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路思路一(迭代)思路二(递归)代码代码一(迭代)/** * Definition for singly-linked list. * struct ListNode { * int v...原创 2020-03-03 11:49:03 · 138 阅读 · 0 评论 -
3.3 合并排序的数组
题目给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]思路假设A和B共有元素n个,那么目的就是有序的填慢A中的前n个空。...原创 2020-03-03 11:05:47 · 303 阅读 · 0 评论