力扣
XdpCs
https://github.com/XdpCs
展开
-
力扣:统计一致字符串的数目
1684. 统计一致字符串的数目给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。请你返回 words 数组中 一致字符串 的数目。示例 1:输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"]输出:2解释:字符串 "aaab" 和 "baa" 都是一致字符串,因为它们只包含字符 'a' 和 'b' 。示例 2:原创 2022-04-18 21:51:52 · 237 阅读 · 0 评论 -
力扣:层数最深叶子节点的和
1302. 层数最深叶子节点的和给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。示例 1:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15示例 2:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:19提示:树中节点数目在范围 [1, 104] 之间。1 <= Node.val <= 100/** * Defin原创 2022-04-18 21:43:21 · 358 阅读 · 0 评论 -
力扣:交换数字
面试题 16.01. 交换数字编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2-2147483647 <= numbers[i] <= 2147483647抖机灵 这显然是不对的class Solution { public int[] swapNumbers(int[] numbers) { return n原创 2022-04-17 20:33:35 · 307 阅读 · 0 评论 -
力扣:二叉树的镜像
剑指 Offer 27. 二叉树的镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *原创 2022-04-17 20:23:40 · 397 阅读 · 0 评论 -
力扣:括号生成
22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8class Solution { List<String> list = new ArrayList<>(); public原创 2022-04-17 20:13:13 · 407 阅读 · 0 评论 -
力扣:生成匹配的括号
剑指 Offer II 085. 生成匹配的括号正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8class Solution { List<String> list = new ArrayList<>原创 2022-04-17 20:12:04 · 227 阅读 · 0 评论 -
力扣:没有重复元素集合的全排列
剑指 Offer II 083. 没有重复元素集合的全排列给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums.length &l原创 2022-04-17 19:51:15 · 480 阅读 · 0 评论 -
力扣:展平二叉搜索树
剑指 Offer II 052. 展平二叉搜索树给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]示例 2:输入:root = [5,1,7]输出:[1,null原创 2022-04-17 19:40:09 · 150 阅读 · 0 评论 -
力扣:判断句子是否为全字母句
1832. 判断句子是否为全字母句全字母句 指包含英语字母表中每个字母至少一次的句子。给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为 全字母句 。如果是,返回 true ;否则,返回 false 。示例 1:输入:sentence = "thequickbrownfoxjumpsoverthelazydog"输出:true解释:sentence 包含英语字母表中每个字母至少一次。示例 2:输入:sentence = "leetcode"输出转载 2022-04-17 19:27:58 · 185 阅读 · 0 评论 -
力扣:二进制中1的个数
剑指 Offer 15. 二进制中1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。原创 2022-04-17 19:21:23 · 138 阅读 · 0 评论 -
力扣:位1的个数
191. 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。示例 1:输入:000000原创 2022-04-17 19:19:05 · 115 阅读 · 0 评论 -
力扣:链表的中间结点
876. 链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.n原创 2022-04-16 18:24:20 · 156 阅读 · 0 评论 -
力扣:删除链表中的节点
237. 删除链表中的节点请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9示例 2:输入:head = [4,5,1,9], node = 1输出:[原创 2022-04-12 19:09:03 · 701 阅读 · 0 评论 -
力扣:一维数组的动态和
1480. 一维数组的动态和给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1,原创 2022-04-12 19:01:02 · 339 阅读 · 0 评论 -
力扣:判断根结点是否等于子结点之和
2236. 判断根结点是否等于子结点之和给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。如果根结点值等于两个子结点值之和,返回 true ,否则返回 false 。示例 1:输入:root = [10,4,6]输出:true解释:根结点、左子结点和右子结点的值分别是 10 、4 和 6 。由于 10 等于 4 + 6 ,因此返回 true 。示例 2:输入:root = [5,3,1]输出:false解释:根结点、左子结点和右子结原创 2022-04-12 18:54:54 · 739 阅读 · 0 评论 -
力扣:两整数相加
2235. 两整数相加给你两个整数 num1 和 num2,返回这两个整数的和。示例 1:输入:num1 = 12, num2 = 5输出:17解释:num1 是 12,num2 是 5 ,它们的和是 12 + 5 = 17 ,因此返回 17 。示例 2:输入:num1 = -10, num2 = 4输出:-6解释:num1 + num2 = -6 ,因此返回 -6 。提示:-100 <= num1, num2 <= 100class Solution {原创 2022-04-12 18:52:30 · 374 阅读 · 0 评论 -
力扣:执行操作后的变量值
2011. 执行操作后的变量值存在一种仅支持 4 种操作和 1 个变量 X 的编程语言:++X 和 X++ 使变量 X 的值 加 1--X 和 X-- 使变量 X 的值 减 1最初,X 的值是 0给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后, X 的 最终值 。示例 1:输入:operations = ["--X","X++","X++"]输出:1解释:操作按下述步骤执行:最初,X = 0--X:X 减 1 ,X = 0 - 1 = -原创 2022-04-11 10:26:49 · 143 阅读 · 0 评论 -
力扣:唯一摩尔斯密码词
804. 唯一摩尔斯密码词国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:'a' 对应 ".-" ,'b' 对应 "-..." ,'c' 对应 "-.-." ,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","..原创 2022-04-10 21:29:58 · 102 阅读 · 0 评论 -
力扣:调整数组顺序使奇数位于偶数前面
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示:0 <= nums.length <= 500000 <= nums[i] <= 10000class Solution { public int[] exchange原创 2022-04-09 22:05:21 · 212 阅读 · 0 评论 -
力扣:二叉树的深度
剑指 Offer 55 - I. 二叉树的深度输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。提示:节点总数 <= 10000注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maxim原创 2022-04-09 21:29:01 · 530 阅读 · 0 评论 -
力扣:替换空格
剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000class Solution { public String replaceSpace(String s) { StringBuilder s1 = new StringBuilder(); for(int原创 2022-04-09 21:10:38 · 215 阅读 · 0 评论 -
力扣:两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。如下面的两个链表 :在节点 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 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A原创 2022-04-09 16:56:58 · 124 阅读 · 0 评论 -
力扣:二维数组中的查找
剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30原创 2022-04-09 16:02:28 · 498 阅读 · 0 评论 -
力扣:链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5./** * Definition for singly-linked list.原创 2022-04-07 07:35:44 · 732 阅读 · 0 评论 -
力扣:二叉树的层序遍历
102. 二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <= Node.val <= 1000/** * Defi原创 2022-04-06 22:13:24 · 145 阅读 · 0 评论 -
力扣:链表中环的入口节点
剑指 Offer II 022. 链表中环的入口节点给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。**说明:**不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4],原创 2022-04-06 21:54:06 · 406 阅读 · 0 评论 -
力扣:连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 105-100 <= arr[i] <= 100class Solution { public int ma原创 2022-04-06 19:36:14 · 523 阅读 · 0 评论 -
力扣:存在重复元素
217. 存在重复元素给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。示例 1:输入:nums = [1,2,3,1]输出:true示例 2:输入:nums = [1,2,3,4]输出:false示例 3:输入:nums = [1,1,1,3,3,4,3,2,4,2]输出:true提示:1 <= nums.length <= 105-109 <= nums[i] <=原创 2022-03-22 17:59:17 · 365 阅读 · 0 评论 -
力扣:有效的括号
20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:true提示:原创 2022-03-21 08:47:27 · 96 阅读 · 0 评论 -
力扣:删除链表的节点
剑指 Offer 18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意: 此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1原创 2022-03-21 05:54:25 · 1304 阅读 · 0 评论 -
力扣:翻转二叉树
226. 翻转二叉树给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内-100 <= Node.val <= 100/** * Definition for a binary tree n原创 2022-03-21 05:41:34 · 211 阅读 · 0 评论 -
力扣:移除重复节点
面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?/** * Definition for singly-linked list. * public class原创 2022-03-21 05:34:07 · 350 阅读 · 0 评论 -
力扣:删除排序链表中的重复元素
83. 删除排序链表中的重复元素给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列/** * Definition for singly-l原创 2022-03-21 05:16:43 · 261 阅读 · 0 评论 -
力扣:判定字符是否唯一
面试题 01.01. 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分class Solution { public boolean isUnique(String astr) { HashSet<Character&原创 2022-03-21 05:10:32 · 665 阅读 · 0 评论 -
力扣:回文排列
面试题 01.04. 回文排列给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)哈希class Solution { public boolean canPermutePalindrome(String s) { HashMap<Character,Int原创 2022-03-21 05:05:11 · 208 阅读 · 0 评论 -
力扣:两数之和 IV - 输入 BST
653. 两数之和 IV - 输入 BST给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。示例 1:输入: root = [5,3,6,2,4,null,7], k = 9输出: true示例 2:输入: root = [5,3,6,2,4,null,7], k = 28输出: false提示:二叉树的节点个数的范围是 [1, 104].-104 <= Node.val <= 104ro原创 2022-03-21 04:32:32 · 305 阅读 · 0 评论 -
力扣:重新排列数组
1470. 重新排列数组给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7] 解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums =原创 2022-03-20 00:28:17 · 396 阅读 · 0 评论 -
力扣:好数对的数目
1512. 好数对的数目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums =原创 2022-03-19 21:43:14 · 380 阅读 · 0 评论 -
力扣:句子中的最多单词数
2114. 句子中的最多单词数一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子 。请你返回单个句子里 单词的最多数目 。示例 1:输入:sentences = ["alice and bob love leetcode", "i think so too", "this is great thanks very much"]输出:6解释:- 第一个句子 "alice原创 2022-03-19 09:28:45 · 316 阅读 · 0 评论 -
力扣:二叉树的后序遍历
145. 二叉树的后序遍历给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root = [1,null,2,3]输出:[3,2,1]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点的数目在范围 [0, 100] 内-100 <= Node.val <= 100**进阶:**递归算法很简单,你可以通过迭代算法完成吗?/** * Definition for a bi原创 2022-03-19 07:18:42 · 421 阅读 · 0 评论