Tag:leetcode
All the articles with the tag "leetcode".
最大子序和
Posted on:2024年1月25日 at 19:54给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入: nums = [1] 输出: 1 示例 3: 输入: nums = [5,4,-
爬楼梯
Posted on:2024年1月25日 at 19:36假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入: n = 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入: n = 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 提示: 1 <= n <
字符串相加
Posted on:2024年1月24日 at 17:25给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例 1: 输入: num1 = "11", num2 = "123" 输出: "134" 示例 2: 输入: num1 = "456", num2 = "77" 输出: "533" 示例 3:
爱吃香蕉的珂珂
Posted on:2023年6月11日 at 15:20珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有香蕉的最小
有效的变位词
Posted on:2023年6月9日 at 09:25给定两个字符串 s 和 t ,编写一个函数来判断它们是不是一组变位词(字母异位词)。 注意:若 s 和 t中每个字符出现的次数都相同且字符顺序不完全相同,则称 s 和 t互为变位词(字母异位词)。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 示例 3: 输入: s
只出现一次的数字
Posted on:2023年5月30日 at 09:45给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 /** * @param {number[]} nums * @return {number} */ var sing
两个字符串的删除操作
Posted on:2023年5月23日 at 09:24给定两个单词 word1 和 word2 ,返回使得 word1 和 word2相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 = "sea", word2 = "eat" 输出: 2 解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea" 示例 2: 输入: word1 = "leetcode", word2 = "
二叉树的层序遍历
Posted on:2023年3月12日 at 23:15给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: **输入:**root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: **输入:**root = [1] 输出:[[1]] 示例 3: **输入:**root = [] 输出:[] 提示: 树中节点数目在范围 [0, 200
二叉树的最近公共祖先
Posted on:2023年3月12日 at 23:04给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5
找出数组中重复的数字
Posted on:2023年3月12日 at 17:10在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出: 2 或 3 限制: 2 <= n <= 100000 /** * @param {number[]} nums * @return {n
x 的平方根
Posted on:2023年2月19日 at 15:21给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意: 不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入: x = 4 输出: 2 示例 2: 输入: x = 8 输出: 2 解释: 8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被
环形链表
Posted on:2023年2月19日 at 15:13给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。 如果链表中存在环 ,则返回 true 。 否则,返回 false 。 示例 1: 输入:
路径总和
Posted on:2022年7月17日 at 19:59给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例 1: 输入: root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targe
编辑距离
Posted on:2022年7月17日 at 19:44给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') r
数组中的第 k 大的数字
Posted on:2022年7月17日 at 19:37给定整数数组 nums 和整数 k,请返回数组中第 **k** 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4], k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6], k = 4 输出: 4 提示: 1 <= k <= nums.length <= 10^4 -10^
二叉树中和为某一值的路径
Posted on:2022年5月16日 at 23:01给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22 输出: [[5,4,11,2],[5,8,4,5]] 示例 2: 输入: root = [
合并两个有序数组
Posted on:2022年5月16日 at 23:00给你两个按 非递减顺序 排列的整数数组 nums1和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意: 最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后
有效的括号
Posted on:2022年5月16日 at 22:56给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入: s = "()" 输出: true 示例 2: 输入: s = "()[]{}" 输出: true 示例 3: 输入: s = "(]" 输出: false 示例 4: 输入: s = "([
二叉树的层序遍历
Posted on:2022年5月16日 at 22:40给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入: root = [3,9,20,null,null,15,7] 输出: [[3],[9,20],[15,7]] 示例 2: 输入: root = [1] 输出: [[1]] 示例 3: 输入: root = [] 输出: [] 提示: 树中节点数目在范围 [0, 2000] 内 -
数据流中的中位数
Posted on:2022年5月11日 at 09:20如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操作的数据结构: void addNum(int num) - 从数据流中添加一个整数到数据
最小的k个数
Posted on:2022年5月11日 at 09:11输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入: arr = [3,2,1], k = 2 输出: [1,2] 或者 [2,1] 示例 2: 输入: arr = [0,1,2,1], k = 1 输出: [0] 限制: 0 <= k <= arr.length <= 10000 0 <= a
搜索二维矩阵
Posted on:2022年5月6日 at 22:22编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出: true 示例 2: 输入: matrix = [[1,3,5,7],[10,11,
删除排序链表中的重复元素
Posted on:2022年4月17日 at 20:23给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入: head = [1,1,2] 输出: [1,2] 示例 2: 输入: head = [1,1,2,3,3] 输出: [1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序 排列 /**
翻转二叉树
Posted on:2022年4月10日 at 12:03给你一棵二叉树的根节点 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
时钟指针的夹角
Posted on:2022年3月20日 at 23:23给你两个数 hour 和 minutes 。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(60 单位制)。 示例 1: 输入: hour = 12, minutes = 30 输出: 165 示例 2: 输入: hour = 3, minutes = 30 输出; 75 示例 3: 输入: hour = 3, minutes = 15 输出: 7.5 示例 4: 输入: hour =
回文子串
Posted on:2022年3月20日 at 20:53给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入: s = "abc" 输出: 3 解释: 三个回文子串: "a", "b", "c" 示例 2: 输入: s = "aaa" 输出:
Z 字形变换
Posted on:2021年12月26日 at 22:23将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。 请你实现这个将字符串进行指定行数变换的函数: string con
最长回文子串
Posted on:2021年11月18日 at 21:08给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 示例 3: 输入:s = "a" 输出:"a" 示例 4: 输入:s = "ac" 输出:"a" 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组
寻找两个正序数组的中位数
Posted on:2021年11月18日 at 20:39给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 示例 2: 输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,
无重复字符的最长子串
Posted on:2021年9月5日 at 20:19给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字
两数相加
Posted on:2021年9月5日 at 20:18给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [
两数之和
Posted on:2021年8月30日 at 10:59给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1