![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
菜鸭子
我回来了!!!
展开
-
【LeetCode】OJ系统练习题目总结
栈有效的括号二叉树的后序遍历下一个更大的元素棒球比赛最小栈删除最外层的括号堆最后一块石头的重量贪心算法柠檬水找零分发饼干删列造序最后一块石头的重量排序有效的字母异位词三角形的最大周长树二叉树的最大深度相同的树N叉树的前序遍历二叉树的后序遍历翻转二叉树对称二叉树哈希表两数之和有效的字母异位词链表合并两个有序链表删除排...原创 2020-10-18 16:41:33 · 313 阅读 · 0 评论 -
【LeetCode 70】爬楼梯之动态规划法
题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1...原创 2020-10-18 16:43:40 · 229 阅读 · 0 评论 -
【LeetCode 1046】最后一块石头的重量
题目描述:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,...原创 2020-10-18 16:44:06 · 198 阅读 · 0 评论 -
【LeetCode 101】对称二叉树之迭代法
题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3官方题解:判断一棵二叉树,检查它是否是镜像对...原创 2020-10-18 16:44:17 · 158 阅读 · 0 评论 -
【LeetCode 226】翻转二叉树
题目描述:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1题解:这道题用到了递归,该题的力扣评论有很快速而优雅的解法(膜拜大佬)渣渣的我想了许久,只能搬运膜拜了 指路原作者评论链接class Sol...原创 2020-10-18 16:44:31 · 129 阅读 · 0 评论 -
【LeetCode 145】二叉树的后序遍历
题目描述:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]题解:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;...原创 2020-10-18 16:45:06 · 167 阅读 · 0 评论 -
【LeetCode 589】N叉树的前序遍历(递归法)
题目描述:给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。题解:/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} p...原创 2020-10-18 16:45:16 · 178 阅读 · 0 评论 -
【LeetCode 100】相同的树
题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3[1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2 ...原创 2020-10-18 16:41:49 · 133 阅读 · 0 评论 -
【LeetCode 876】链表的中间结点
题目描述:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans....原创 2020-10-18 16:45:29 · 754 阅读 · 0 评论 -
【LeetCode 160】相交链表
题目描述:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8...原创 2020-10-18 16:41:11 · 108 阅读 · 0 评论 -
【LeetCode 141】环形链表
题目描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:...原创 2020-10-18 16:47:59 · 125 阅读 · 0 评论 -
【LeetCode 203】移除链表元素
题目描述:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5题解:/** * Definition for singly-linked list. * public class ListNode { * int val...原创 2020-10-18 16:48:07 · 184 阅读 · 0 评论 -
【LeetCode 234】回文链表
题目描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true题解:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;...原创 2020-10-18 16:47:42 · 160 阅读 · 0 评论 -
【LeetCode 1021】删除最外层的括号
题目描述:有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非...原创 2020-10-18 16:38:44 · 149 阅读 · 0 评论 -
【LeetCode 496】下一个更大的元素
题目描述:给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4...原创 2020-10-18 16:42:40 · 140 阅读 · 0 评论 -
【LeetCode 860】柠檬水找零
题目描述:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:...原创 2020-10-18 16:51:00 · 251 阅读 · 0 评论 -
【LeetCode 944】删列造序
题目描述:给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去 A 中对应列中的所有字符,形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。比如,有 A = [“abcdef”, “uvwxyz”],要删掉的列为 {0, 2, 3},删除后 A 为[“bef”, “vyz”]...原创 2020-10-18 16:42:31 · 167 阅读 · 0 评论 -
【LeetCode 104】二叉树的最大深度
题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。题解:/** * Definition for a binary tree...原创 2020-10-18 16:42:20 · 159 阅读 · 0 评论 -
【LeetCode 206】反转链表
题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解:我这里用的迭代法/** * Definition for singly-linked list. * public class ListNode { * int val; * ...原创 2020-10-18 16:45:39 · 124 阅读 · 0 评论 -
【LeetCode 237】删除链表中的节点
题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2...原创 2020-10-18 16:45:48 · 227 阅读 · 0 评论 -
【LeetCode 69】二分查找之x的平方根
题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。题解:class Solution { public int m...原创 2020-10-18 16:50:46 · 245 阅读 · 0 评论 -
【LeetCode 35】二分查找之搜索插入位置
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0题解...原创 2020-10-18 16:48:29 · 289 阅读 · 0 评论 -
【LeetCode】贪心算法之分发饼干
题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为...原创 2020-10-18 16:47:12 · 231 阅读 · 0 评论 -
【LeetCode】有效的字母异位词
题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。题解:class Solution { public boolean isA...原创 2020-10-18 16:46:42 · 125 阅读 · 0 评论 -
【LeetCode】两数之和
题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:c...原创 2020-10-18 16:48:38 · 125 阅读 · 0 评论 -
【LeetCode】整数反转
题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321题解:class Solution { public int reverse(int x) { //存放结果 int rev = 0; while (x != 0) {...原创 2020-10-18 16:46:51 · 163 阅读 · 0 评论 -
【LeetCode】最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。题解:class Solution { public String longestCom...原创 2020-10-18 16:49:33 · 116 阅读 · 0 评论 -
【LeetCode】回文数
题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。题解:class Solution { public boolean isPalindrome(int...原创 2020-10-18 16:49:42 · 228 阅读 · 0 评论 -
【LeetCode 20】栈之有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入...原创 2020-10-18 16:40:59 · 161 阅读 · 0 评论 -
【LeetCode 374】二分查找之猜数字的大小
题目描述:我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!(注意这里的“我的数字”指的是要猜的数)示例 ...原创 2020-10-18 16:50:39 · 199 阅读 · 0 评论 -
【LeetCode 83】删除排序链表中的重复元素
题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解:/** * Definition for singly-linked list. * public class ListNode {...原创 2020-10-18 16:45:56 · 134 阅读 · 0 评论 -
【LeetCode 21】合并两个有序链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解:/** * Definition for singly-linked list. * public class ListNode { * ...原创 2020-10-18 16:50:16 · 140 阅读 · 0 评论 -
【LeetCode 682】棒球比赛
题目描述:你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的...原创 2020-10-18 16:46:11 · 209 阅读 · 0 评论 -
【LeetCode 155】最小栈
题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0)...原创 2020-10-18 16:50:24 · 124 阅读 · 0 评论 -
【LeetCode 27】移除元素
题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2020-10-18 16:51:19 · 225 阅读 · 0 评论 -
【LeetCode 26】删除排序数组中的重复项
题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定...原创 2020-10-18 16:40:49 · 137 阅读 · 0 评论 -
【LeetCode 283】移动零
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解:class Solution { public void moveZeroes(int[] nums) { if(n...原创 2020-10-18 16:46:25 · 145 阅读 · 0 评论 -
【LeetCode 976】三角形的最大周长
题目描述:给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8题解:关键在于先把数组排序,这里我用了快速排序算法...原创 2020-10-18 16:50:32 · 204 阅读 · 0 评论 -
【LeetCode】罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数...原创 2020-10-18 16:47:00 · 167 阅读 · 0 评论