随笔分类 - LeetCode
摘要:替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。 注意:字符串长度 和k不会超过104。 示例 输入:s = "ABAB", k = 2 输出:4 解释:用两个'A'替换为两
阅读全文
摘要:汇总区间 给定一个无重复元素的有序整数数组nums。 返回恰好覆盖数组中所有数字的最小有序区间范围列表。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字x。 列表中的每个区间范围[a,b]应该按如下格式输出: "a->b",如果a != b。 "a
阅读全文
摘要:滑动窗口最大值 给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,
阅读全文
摘要:种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n 。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回Fa
阅读全文
摘要:最后一块石头的重量 有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。那么粉碎的可能结果如下: 如果x == y,那么两块石头都会被完全粉碎。 如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石
阅读全文
摘要:字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回-1。 示例 s = "leetcode" 返回 0 s = "loveleetcode" 返回 2 题解 /** * @param {string} s * @return {number} *
阅读全文
摘要:买卖股票的最佳时机含手续费 给定一个整数数组prices,其中第i个元素代表了第i天的股票价格;非负整数fee代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意:这里的一笔交
阅读全文
摘要:单调递增的数字 给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。当且仅当每个相邻位数上的数字x和y满足x <= y时,我们称这个整数是单调递增的。 示例 输入: N = 10 输出: 9 输入: N = 1234 输出: 1234 输入: N =
阅读全文
摘要:Dota2参议院 Dota2的世界里有两个阵营:Radiant天辉和Dire夜魇 Dota2参议院由来自两派的参议员组成。现在参议院希望对一个Dota2游戏里的改变作出决定。他们以一个基于轮转过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项: 禁止一名参议员的权利:参议员可以让另一
阅读全文
摘要:不同路径 一个机器人位于一个m x n网格的左上角(起始点在下图中标记为Start )。 机器人每次只能向下或者向右移动一步,机器人试图达到网格的右下角(在下图中标记为Finish)。 Start Finish 例如,上图是一个7 x 3的网格。有多少可能的路径? 示例 输入: m = 3, n =
阅读全文
摘要:保持城市天际线 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。高度0也被认为是建筑物。 最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远
阅读全文
摘要:上升下降字符串 给你一个字符串s,请你根据下面的算法重新构造字符串: 从s中选出最小的字符,将它接在结果字符串的后面。 从s剩余字符中选出最小的字符,且该字符比上一个添加的字符大,将它接在结果字符串后面。 重复步骤2,直到你没法从s中选择字符。 从s中选出最大的字符,将它接在结果字符串的后面。 从s
阅读全文
摘要:供暖器 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在,给出位于一条水平线上的房屋houses和供暖器heaters的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。 说明:所有供暖器都遵循你的半径标准,加热的半
阅读全文
摘要:根据身高重建队列 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,
阅读全文
摘要:按奇偶排序数组II 给定一个非负整数数组A,A中一半整数是奇数,一半整数是偶数。 对数组进行排序,以便当A[i]为奇数时,i也是奇数;当A[i]为偶数时,i也是偶数。 你可以返回任何满足上述条件的数组作为答案。 示例 输入:[4,2,5,7] 输出:[4,5,2,7] 解释:[4,7,2,5],[2
阅读全文
摘要:最接近原点的K个点 我们有一个由平面上的点组成的列表points。需要从中找出K个距离原点(0, 0)最近的点。 (这里,平面上两点之间的距离是欧几里德距离。) 你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。 示例 输入:points = [[1,3],[-2,2]], K =
阅读全文
摘要:子集 II 给定一个可能包含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 题解 /** * @param {number[]} nu
阅读全文
摘要:两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 题解 /** * @param {number[
阅读全文
摘要:独一无二的出现次数 给你一个整数数组arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回true;否则返回false。 示例 输入:arr = [1,2,2,1,1,3] 输出:true 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1
阅读全文
摘要:长按键入 你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入1次或多次。 你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。 示例 输入:name = "alex", typed = "
阅读全文