![](https://img-blog.csdnimg.cn/20190719070924715.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
记录leetcode刷题
每天学一点!
时刻保持对知识的热情!
展开
-
572.另一个树的子树
题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例示例 1:给定的树 s: 3 / \ 4 5 / \1 2给定的树 t: 4 / \1 2返回 true,因为 t 与 ...原创 2019-12-03 10:28:35 · 88 阅读 · 0 评论 -
494.目标和
题目描述给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例输入: nums: [1, 1, 1, 1, 1], S: 3 输出: 5 解释:-1+1+1+1+1 = 3+1-1+...原创 2019-12-02 16:09:58 · 169 阅读 · 0 评论 -
468. 验证IP地址
题目描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。 IPv6 地址由8组16进制的数字来表示,每组表示 16 比特...原创 2019-12-01 14:15:27 · 295 阅读 · 0 评论 -
463. 岛屿的周长
题目描述 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。 网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。 岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛...原创 2019-12-01 10:57:56 · 73 阅读 · 0 评论 -
445.两数相加 II
题目描述 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> ...原创 2019-11-30 19:57:19 · 185 阅读 · 0 评论 -
415. 字符串相加
题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。思路 竖式加法。代码class Solution {public:...原创 2019-11-30 18:21:39 · 182 阅读 · 0 评论 -
380. 常数时间插入、删除和获取随机元素
题目描述 设计一个支持在平均时间复杂度 O(1) ,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例// 初始化一个空的集合。RandomizedSet randomSet = new Ran...原创 2019-11-30 17:28:43 · 129 阅读 · 0 评论 -
207.课程表
题目描述现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?...原创 2019-11-30 16:15:43 · 164 阅读 · 0 评论 -
238. 除自身以外数组的乘积
题目描述给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空...原创 2019-11-29 20:18:01 · 100 阅读 · 0 评论 -
221. 最大正方形
题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路动态规划。(1)状态方程dp(i)(j)表示右下角下标为(i,j)时的最大正方形边长。当遇到0时,dp[i][j] = 0,肯定不能构成正方形;当遇到1时,有...原创 2019-11-28 10:16:12 · 110 阅读 · 0 评论 -
204. 计数质数
题目描述统计所有小于非负整数n的质数的数量。示例输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路参考来自:leetcode中文社区主要有两点:(1)判断一个数是不是质数,可以将遍历数组长度缩短到sqrt(n)。(2)如果一个数是质数,那么该数的所有倍数都不为质数。代码cl...原创 2019-11-27 19:04:41 · 112 阅读 · 0 评论 -
198. 打家劫舍
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (...原创 2019-11-27 17:44:01 · 86 阅读 · 0 评论 -
150. 逆波兰表达式求值
题目描述根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((...原创 2019-11-26 10:50:12 · 155 阅读 · 0 评论 -
146. LRU缓存机制
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新...原创 2019-11-25 16:21:18 · 133 阅读 · 0 评论 -
191. 位1的个数
题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数。示例输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。思路只要比较最低位是否为1,然后右移1位。代码class ...原创 2019-11-25 15:04:32 · 85 阅读 · 0 评论 -
56.合并区间
题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重...原创 2019-11-19 09:34:38 · 95 阅读 · 0 评论 -
49. 字母异位词分组
题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出: [ ["ate","eat","tea"],["nat","tan"],["bat"] ]说明:所有输入均为小写字母。 不考虑答案输出的顺序。思路...原创 2019-11-17 18:58:29 · 108 阅读 · 0 评论 -
860. 柠檬水找零
题目描述在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回 false。示...转载 2019-08-03 07:55:58 · 110 阅读 · 0 评论 -
946. 验证栈序列
题目描述给定pushed和popped两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false。示例示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), pu...原创 2019-07-30 08:35:04 · 210 阅读 · 0 评论 -
392. 判断子序列
题目描述给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。...原创 2019-08-03 09:45:04 · 148 阅读 · 0 评论 -
232. 用栈实现队列
题目描述使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。思路两个队列实现栈和两个栈实现队列,思路一模一样。只要push的时候,利用辅助栈或队列将数据倒置即可。代码class MyQueue {public: ...原创 2019-07-30 07:59:40 · 132 阅读 · 0 评论 -
225. 用队列实现栈
题目描述使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使用 l...原创 2019-07-30 07:48:49 · 188 阅读 · 0 评论 -
155. 最小栈
题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。思路利用一个辅助栈来记录最小元素,辅助栈的栈顶元素为当前栈的最小元素。也就是当push一个数时,若此数比辅助栈的栈顶元素要小...原创 2019-07-30 08:09:23 · 135 阅读 · 0 评论 -
141/142. 环形链表/环形链表II
题目描述给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects t...原创 2019-07-29 08:09:47 · 112 阅读 · 0 评论 -
138. 复制带随机指针的链表
题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 ...原创 2019-07-29 09:25:51 · 72 阅读 · 0 评论 -
91. 解码方法
题目描述一条包含字母A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释:它可以解码为 "AB"(1 2)或者 "L"(12)。示例2:输入: "226"输出: 3解释:它可以解码为 "BZ" (2...原创 2019-07-17 08:48:40 · 242 阅读 · 0 评论 -
322. 零钱兑换
题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1...原创 2019-07-15 21:17:54 · 107 阅读 · 0 评论 -
86. 分隔链表
题目描述给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路创建两个链表,链表min表...原创 2019-07-29 08:40:36 · 80 阅读 · 0 评论 -
70. 爬楼梯
题目描述假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2....原创 2019-07-16 18:23:36 · 119 阅读 · 0 评论 -
(LeetCode每日一刷72)64. 最小路径和
题目描述给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路动态规划四部曲:(1)确定状态,最后一步的前一步是走到(m-1, ...原创 2019-07-16 14:12:34 · 142 阅读 · 0 评论 -
(LeetCode每日一刷71)63. 不同路径 II
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m和 n 的值均不超过 100。示例1:输...原创 2019-07-16 10:08:04 · 639 阅读 · 0 评论 -
(LeetCode每日一刷70)62. 不同路径
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2...原创 2019-07-16 08:25:22 · 145 阅读 · 0 评论 -
(LeetCode每日一刷68)36. 有效的数独
题目描述判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3","."...原创 2019-05-19 15:17:47 · 177 阅读 · 0 评论 -
leetcode24. 两两交换链表中的节点
题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:1->2->3->4, 你应该返回2->1->4->3思路1递归。我提交的代码/** * Definition for singly-linked list. * st...原创 2019-05-17 13:41:47 · 103 阅读 · 0 评论 -
(LeetCode每日一刷61)18. 四数之和
题目描述给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求...原创 2019-05-16 22:07:53 · 105 阅读 · 0 评论 -
(LeetCode每日一刷46)941. 有效的山脉数组
题目描述:给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3 在 0 < i < A.length - 1 条件下,存在 i 使得: A[0] < A[1] < ... A[i-1] < A[i] A[i] > A[...原创 2018-12-04 09:51:01 · 231 阅读 · 0 评论 -
(LeetCode每日一刷45)867. 转置矩阵
题目描述:给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例:示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]] 提示:...原创 2018-12-04 09:24:57 · 131 阅读 · 0 评论 -
(LeetCode每日一刷44)888. 公平的糖果交换
题目描述:爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。...原创 2018-12-04 09:10:44 · 129 阅读 · 0 评论 -
(LeetCode每日一刷43)896. 单调数列
题目描述:如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。 示例:示例 1:输入:[1,2,2,3]输出:tr...原创 2018-12-04 08:38:05 · 147 阅读 · 0 评论 -
(LeetCode每日一刷42)832. 翻转图像
题目描述:给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。 示例:示例 1:输入: [[1,1,0...原创 2018-12-03 18:56:35 · 168 阅读 · 0 评论