![](https://img-blog.csdnimg.cn/20201031235428513.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
Leecode刷题笔记
majinbo111
这个作者很懒,什么都没留下…
展开
-
Leetcode 199. 二叉树的右视图
199. 二叉树的右视图层次遍历二叉树(BFS)/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($val = 0, $left = null, $right = null) { * $thi原创 2021-07-03 23:41:26 · 178 阅读 · 1 评论 -
Leetcode 147. 对链表进行插入排序 & Leetcode 148. 排序链表
https://leetcode-cn.com/problems/insertion-sort-list/初版复杂度如插入排序,最坏可能为O(n^2)/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* insertionSortList(struct ListNode* head.原创 2021-06-26 23:28:10 · 106 阅读 · 0 评论 -
Leetcode 1143. 最长公共子序列
1143. 最长公共子序列https://leetcode-cn.com/problems/longest-common-subsequence/给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的原创 2021-05-13 09:13:49 · 203 阅读 · 0 评论 -
leetcode 182. 查找重复的电子邮箱
查找重复的电子邮箱来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/duplicate-emails著作权归领扣网络所有。编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据.原创 2021-02-28 18:11:40 · 186 阅读 · 0 评论 -
拓扑排序(leetcode 207、210)
拓扑排序有向无环图有向无环图:无环的有向图,简称DAG(Directed Acycline Graph)。有向无环图的应用有向无环图常用来描述一个工程或系统的进行过程(通常把计划、施工、生产、程序流程等当成一个工程)。一个工程可以分为若干个子工程,只要完成了这些子工程(活动),就可以使得整个工程完成。有向无环图分为两种表示方法,AOV网与AOE网。AOV网 (拓扑排序)用一个有向图表示一个工程的各个工程及其互相制约关系,其中顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活原创 2021-01-14 12:07:54 · 476 阅读 · 0 评论 -
leetcode 830. 较大分组的位置
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/positions-of-large-groups著作权归领扣网络所有在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下.原创 2021-01-05 11:34:47 · 120 阅读 · 0 评论 -
226. 翻转二叉树 & 剑指 Offer 27. 二叉树的镜像
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree著作权归领扣网络所有题目翻转一棵二叉树。备注:本题与 剑指 Offer 27. 二叉树的镜像 相同示例:输入: 4 / \ 2 7 / \ / \ 1 3 6 9输出: 4 / \ 7 2 / \ / \ 9 .原创 2020-12-29 15:34:38 · 114 阅读 · 0 评论 -
leetcode 198. 打家劫舍
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber著作权归领扣网络所有题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4 解释.原创 2020-12-28 16:46:13 · 162 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润 & 121. 买卖股票的最佳时机
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof著作权归领扣网络所有。假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6原创 2020-12-28 14:31:35 · 130 阅读 · 0 评论 -
leetcode 1235. 规划兼职工作
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-profit-in-job-scheduling著作权归领扣网络所有。你打算利用空闲时间来做兼职工作赚些零花钱。这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 profit 三个数组,请你计算并返回可以获得.原创 2020-12-24 18:24:50 · 289 阅读 · 1 评论 -
leetcode 201. 数字范围按位与
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range著作权归领扣网络所有。给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0方法1:找到公共前缀int rangeBitwiseAnd(int.原创 2020-12-23 16:35:07 · 118 阅读 · 0 评论 -
leetcode 739. 每日温度
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/daily-temperatures著作权归领扣网络所有。题目请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0.原创 2020-12-08 15:17:41 · 159 阅读 · 0 评论 -
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array著作权归领扣网络所有。给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:.原创 2020-12-01 13:54:18 · 72 阅读 · 0 评论 -
leetcode 88. 合并两个有序数组
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-array著作权归领扣网络所有。给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = .原创 2020-11-30 18:24:38 · 136 阅读 · 1 评论 -
leetcode 144. 二叉树的前序遍历
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/著作权归领扣网络所有。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。迭代法1-一层循环/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null;.原创 2020-11-24 10:32:41 · 78 阅读 · 0 评论 -
leetcode 98. 验证二叉搜索树
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/validate-binary-search-tree著作权归领扣网络所有。给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3 输出: true示例 2:输入: 5 .原创 2020-11-18 18:19:59 · 87 阅读 · 0 评论 -
leetcode 5603. 确定两个字符串是否接近
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/determine-if-two-strings-are-close著作权归领扣网络所有。如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a .原创 2020-11-15 16:25:40 · 172 阅读 · 0 评论 -
142. 环形链表 II
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/linked-list-cycle-ii著作权归领扣网络所有。给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否.原创 2020-11-13 11:41:03 · 75 阅读 · 0 评论 -
leetcode 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof著作权归领扣网络所有。输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]限制:1 <= s 的长度 <= 8原创 2020-11-12 16:33:36 · 105 阅读 · 0 评论 -
538. / 1038. 把二叉搜索树转换为累加树
538. / 1038. 把二叉搜索树转换为累加树来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree著作权归领扣网络所有。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。原创 2020-11-12 16:19:32 · 122 阅读 · 0 评论 -
47. 全排列 II
47. 全排列 II来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,原创 2020-11-12 16:13:19 · 109 阅读 · 1 评论 -
46. 全排列
46. 全排列来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]class Solution { /** * @param Integer[] $nums原创 2020-11-11 18:18:42 · 68 阅读 · 0 评论 -
leetcode 39. 组合总和
39. 组合总和来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum著作权归领扣网络所有。给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates原创 2020-11-11 17:20:13 · 80 阅读 · 0 评论 -
90. 子集 II
90. 子集 II在 78. 子集 题减枝即可得到答案。class Solution { /** * @param Integer[] $nums * @return Integer[][] **/ private $res = []; function subsetsWithDup($nums) { sort($nums); //先排序 $this->dfs($nums, 0, []);原创 2020-11-11 16:43:21 · 77 阅读 · 0 评论 -
leetcode 78. 子集
78. 子集来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets著作权归领扣网络所有。给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]方法一:迭代法实现子集枚举时间复杂度:O(n原创 2020-11-11 16:28:13 · 118 阅读 · 0 评论 -
leetcode 110. 平衡二叉树
110. 平衡二叉树来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/balanced-binary-tree著作权归领扣网络所有。给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,nul原创 2020-11-10 15:53:26 · 120 阅读 · 0 评论 -
leetcode 剑指 Offer 55 - I. 二叉树的深度 / 104. 二叉树的最大深度
剑指 Offer 55 - I. 二叉树的深度 / 104. 二叉树的最大深度来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof著作权归领扣网络所有。输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。提示:节点总数原创 2020-11-10 14:23:38 · 90 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof著作权归领扣网络所有。请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的原创 2020-11-07 14:34:31 · 159 阅读 · 0 评论 -
leetcode 153. 寻找旋转排序数组中的最小值
153. 寻找旋转排序数组中的最小值来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array著作权归领扣网络所有。假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。请找出其中最小的元素。示例 1:输入:nums = [3,4,5,1,2]输出:1示例 2:输入:nums原创 2020-11-07 11:01:16 · 117 阅读 · 0 评论 -
leetcode 62. 不同路径
62. 不同路径来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。原创 2020-11-06 18:06:42 · 663 阅读 · 1 评论 -
leetcode 22. 括号生成
22. 括号生成来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著作权归领扣网络所有。数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]DFSclass Solution { /** * @par原创 2020-11-06 16:05:18 · 95 阅读 · 0 评论 -
leetcode 剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof著作权归领扣网络所有。输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <=原创 2020-11-05 23:43:20 · 121 阅读 · 0 评论 -
Leetcode 剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有。找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2原创 2020-11-04 16:42:51 · 327 阅读 · 0 评论 -
leetcode 剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表来源:力扣(LeetCode)https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/著作权归领扣网络所有。输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://l原创 2020-11-04 16:38:22 · 111 阅读 · 0 评论 -
leetcode 剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/著作权归领扣网络所有。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000代码:$str = "We are happy.";var_d原创 2020-11-04 16:16:32 · 72 阅读 · 0 评论 -
Leetcode 剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/著作权归领扣网络所有。用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“C原创 2020-11-04 15:36:31 · 108 阅读 · 0 评论 -
leetcode 445. 两数相加 II
445. 两数相加 IIhttps://leetcode-cn.com/problems/add-two-numbers-ii给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 ->原创 2020-11-03 15:37:51 · 81 阅读 · 0 评论 -
leetcode 面试题 02.02. 返回倒数第 k 个节点
返回倒数第 k 个节点实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2020-11-03 10:55:54 · 145 阅读 · 0 评论 -
leetcode 61. 旋转链表
https://leetcode-cn.com/problems/rotate-list/leetcode 61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 ..原创 2020-11-02 15:18:44 · 94 阅读 · 0 评论 -
LeetCode 1343. 大小为 K 且平均值大于等于阈值的子数组数目
题目: 大小为 K 且平均值大于等于阈值的子数组数目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5原创 2020-05-28 02:10:42 · 333 阅读 · 0 评论