LeetCode
文章平均质量分 89
LeetCode
phygram
加油→_→
展开
-
LeetCode刷题笔记_20210926
1. 判断计数/偶数写法:相关题目:《剑指 Offer 21. 调整数组顺序使奇数位于偶数前面》https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/常规写法: 取模(对2取模)if( i % 2 != 0 ) //奇数if( i% 2 == 0 ) //偶数优化写法: 位运算(用1与运算)if( i & 1 == 1 )if( i &a原创 2021-09-27 00:35:20 · 243 阅读 · 0 评论 -
LeetCode刷题笔记_20210925
1. 关于STL中的几个容器的api成员函数:1.1 stack:stack<int> s;s.empty();s.size();s.top();s.push(n);s.pop();1.2 queue:queue<int> q;q.empty();q.size();q.font();q.back();q.push();q.pop();stack 与 queue 的区别在于:stack只能访问 栈顶元素(top),只能在栈顶单头位置原创 2021-09-26 00:20:48 · 353 阅读 · 0 评论 -
LeetCode_700.二叉搜索树中的搜索
题目:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。来源:力扣(LeetCode)原创 2020-10-12 00:40:10 · 105 阅读 · 0 评论 -
LeetCode_110.平衡二叉树
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \原创 2020-10-12 00:18:22 · 239 阅读 · 0 评论 -
LeetCode_429.N叉树的层序遍历
题目:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过 1000。树的节点总数不会超过 5000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2020-10-11 18:23:42 · 96 阅读 · 0 评论 -
LeetCode_145.二叉树的后序遍历
题目:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法时间复杂度: O(n)原创 2020-10-11 17:36:14 · 111 阅读 · 0 评论 -
LeetCode_144.二叉树的前序遍历
题目:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归时间复杂度: O(n)原创 2020-10-11 02:24:02 · 91 阅读 · 0 评论 -
LeetCode_94.二叉树的中序遍历
题目:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法解法二:迭代法...原创 2020-10-11 02:11:32 · 115 阅读 · 0 评论 -
LeetCode_145.二叉树的后序遍历
题目:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法:左右根时间复杂度: O(n)原创 2020-09-27 22:59:49 · 98 阅读 · 0 评论 -
LeetCode_429.N叉树的层序遍历
题目:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过 1000。树的节点总数不会超过 5000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2020-09-27 22:48:51 · 152 阅读 · 0 评论 -
LeetCode_144.二叉树的前序遍历
题目:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:时间复杂度: O(n) //每原创 2020-09-27 21:50:50 · 81 阅读 · 0 评论 -
LeetCode_94.二叉树的中序遍历
题目:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]1 \ 2 /3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法:时间复杂度: O(n) //二叉树有n个结点,每个结点会被原创 2020-09-24 22:34:50 · 138 阅读 · 0 评论 -
LeetCode_49.字母异位词分组
题目:但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/group-anagrams著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法:使用ma原创 2020-09-24 16:51:24 · 127 阅读 · 0 评论 -
LeetCode_242.有效的字母异位词(哈希表)
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/val原创 2020-09-24 16:15:33 · 125 阅读 · 0 评论 -
LeetCode_225.用队列实现栈
题目:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。你可以假设所有操作都是有效的(例如, 对一个原创 2020-09-24 12:03:12 · 88 阅读 · 0 评论 -
LeetCode_232.用栈实现队列
题目:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 –原创 2020-09-24 10:35:34 · 85 阅读 · 0 评论 -
LeetCode_84.柱状图中最大的矩形
题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-rectangle-in-h原创 2020-09-23 23:58:16 · 982 阅读 · 0 评论 -
LeetCode_20.有效的括号
栈的使用的入门题目。题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源原创 2020-09-23 16:02:21 · 68 阅读 · 0 评论 -
LeetCode_234. 回文链表
题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:将链表依次拷贝到一个vector数原创 2020-09-22 23:36:50 · 81 阅读 · 0 评论 -
LeetCode_148.排序链表
题目:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2020-09-20 23:55:24 · 90 阅读 · 0 评论 -
LeetCode_25.K个一组反转链表
题目:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而原创 2020-09-19 15:28:40 · 86 阅读 · 0 评论 -
LeetCode_142.环形链表II
题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0原创 2020-09-18 23:39:31 · 96 阅读 · 0 评论 -
LeetCode_141.环形链表
题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4]原创 2020-09-18 22:19:03 · 154 阅读 · 0 评论 -
LeetCode_No.21 合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:迭代法:时间复杂度: O(m+原创 2020-09-17 23:29:09 · 140 阅读 · 0 评论 -
LeetCode_No.24 两两交换链表中的结点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一:迭代法:需要借助一个额外结点。对于比较复杂的原创 2020-09-17 22:37:10 · 78 阅读 · 0 评论 -
LeetCode_No.206 反转链表
== 反转链表,经典题目,需要记住。 ==题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。原创 2020-09-17 22:16:12 · 118 阅读 · 0 评论 -
LeetCode_No.189 旋转数组
题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]原创 2020-09-17 21:39:56 · 97 阅读 · 0 评论 -
LeetCode_No.26 删除排序数组中的重复项
题目:删除排序数组中的重复项:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新原创 2020-09-15 23:43:10 · 134 阅读 · 0 评论 -
LeetCode_No.283 移动零
题目:移动零:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一:借助外界vector:时间复杂度: O原创 2020-09-15 23:03:47 · 90 阅读 · 0 评论 -
LeetCode_11.盛水最多的容器
题目:盛水最多的容器:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出原创 2020-09-15 00:15:50 · 110 阅读 · 1 评论 -
LeetCode_No.1_两数之和
题目:两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-su原创 2020-09-15 00:09:30 · 80 阅读 · 0 评论