算法题
棠樾
夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。
展开
-
LeetCode题解:66. 加一,BigInt,JavaScript
使用BigInt计算,即可解决。BigInt 是一种内置对象,它提供了一种方法来表示大于 253 - 1 的整数。这原本是 Javascript中可以用 Number 表示的最大数字。但测试用例[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]超出了Number的范围。parseInt或者parseFloat转换会丢失精度。将数组转换为数字,加1之后再转换为数组即可。BigInt 可以表示任意大的整数。原创 2023-02-11 17:28:21 · 155 阅读 · 0 评论 -
LeetCode算法题-- 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"...原创 2022-03-15 14:55:16 · 657 阅读 · 0 评论 -
LeetCode算法题---两个列表的最小索引总和
假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。示例 1:输入: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"],list2 = ["Piatti", "The Grill at Torrey Pines", "Hungr原创 2022-03-15 09:13:17 · 107 阅读 · 0 评论 -
LeetCode算法题-- 求根节点到叶节点数字之和
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字 13因此,数字总和 = 12 + 13 = 2原创 2022-03-14 17:50:15 · 248 阅读 · 0 评论 -
LeetCode算法题--颜色分类
给定一个包含红色、白色和蓝色、共n 个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]/** * @param {number[]} nums * @retu...原创 2022-03-13 14:33:37 · 495 阅读 · 0 评论 -
LeetCode算法题--重新排列单词间的空格
给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。返回 重新排列空格后的字符串 。示例 1:输入:text = " this is a s...原创 2022-03-11 11:49:28 · 188 阅读 · 0 评论 -
LeetCode算法题--山脉数组的峰顶索引
符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3存在 i(0 < i< arr.length - 1)使得:arr[0] < arr[1] < ... arr[i-1] < arr[i]arr[i] > arr[i+1] > ... > arr[arr.length - 1]给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < ar.原创 2022-03-10 19:53:02 · 207 阅读 · 0 评论 -
LeetCode算法题--安排工作以达到最大收益
你有 n个工作和 m 个工人。给定三个数组:difficulty,profit和worker,其中:difficulty[i]表示第 i 个工作的难度,profit[i] 表示第 i 个工作的收益。worker[i] 是第 i 个工人的能力,即该工人只能完成难度小于等于 worker[i] 的工作。每个工人最多 只能安排 一个 工作,但是一个工作可以 完成多次 。举个例子,如果 3 个工人都尝试完成一份报酬为 $1 的同样工作,那么总收益为 $3。如果一个工人不能完成任何工作,...原创 2022-03-10 19:41:30 · 1353 阅读 · 0 评论 -
LeetCode算法题--删除字符串两端相同字符后的最短长度
给你一个只包含字符 'a','b'和 'c'的字符串s,你可以执行下面这个操作(5 个步骤)任意次:选择字符串 s一个 非空 的前缀,这个前缀的所有字符都相同。选择字符串 s一个 非空 的后缀,这个后缀的所有字符都相同。前缀和后缀在字符串中任意位置都不能有交集。前缀和后缀包含的所有字符都要相同。同时删除前缀和后缀。请你返回对字符串 s执行上面操作任意次以后(可能 0 次),能得到的 最短长度。示例 1:输入:s = "ca"输出:2解释:你没法删除任何一个字符,...原创 2022-03-10 14:32:52 · 174 阅读 · 0 评论 -
LeetCode算法题--二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.v...原创 2022-03-07 12:22:16 · 112 阅读 · 0 评论 -
LeetCode算法题--最长连续递增序列
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。示例 1:输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长原创 2022-03-07 11:38:04 · 291 阅读 · 0 评论 -
LeetCode算法题--数组中的第K个最大元素
给定整数数组 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/** * @param {number[]} nums * @param {number} k * @return {number} */var findKthLa.原创 2022-03-07 11:19:49 · 175 阅读 · 0 评论 -
LeetCode算法题-- 最接近原点的 K 个点
给定一个数组 points,其中points[i] = [xi, yi]表示 X-Y 平面上的一个点,并且是一个整数 k ,返回离原点 (0,0) 最近的 k 个点。这里,平面上两点之间的距离是欧几里德距离(√(x1- x2)2+ (y1- y2)2)。你可以按 任何顺序 返回答案。除了点坐标的顺序之外,答案 确保 是 唯一 的。示例 1:输入:points = [[1,3],[-2,2]], k = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离...原创 2022-03-07 11:14:06 · 229 阅读 · 0 评论 -
LeetCode算法题 寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5...原创 2022-03-07 10:16:25 · 125 阅读 · 0 评论 -
LeetCode 算法题 重复至少 K 次且长度为 M 的模式
给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false 。示例 1:输入:arr = [1,2,4,4,4,4], m = 1, k = 3输出:true解释:模式 (4) 的长度为 1 ,且连续重复 4 次。注意,模式可以重复 k 次或更多次,但不能少原创 2022-03-07 09:38:17 · 87 阅读 · 0 评论 -
LeetCode算法题,盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2:输入:hei..原创 2022-03-03 11:24:38 · 187 阅读 · 0 评论 -
力扣算法题 ----分发糖果 js解法
n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。示例1:输入:ratings = [1,0,2]输出:5解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。示例2:输入:ratings = [1,2,2]输出:4解释:你可以分别给第一个、第二个、第..原创 2022-03-03 09:55:17 · 445 阅读 · 0 评论 -
力扣算法题 亲密字符串 js解法
给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 "abcd" 中交换下标 0 和下标 2 的元素可以生成 "cbad" 。示例 1:输入:s = "ab", goal = "ba"输出:true解释:你可以交换 s[0] = 'a' 和 s[1] .原创 2022-03-01 19:38:31 · 222 阅读 · 0 评论