LC 38. 外观数列 题目描述这是 LeetCode 上的 38. 外观数列 ,难度为 简单。 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然 2021-10-14 模拟
LC 剑指 Offer II 069. 山峰数组的顶部 题目描述这是 LeetCode 上的 剑指 Offer II 069. 山峰数组的顶部 ,难度为 简单。 符合下列属性的数组 arr 称为 山峰数组(山脉数组) : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > 2021-10-13 二分 三分
LC 412. Fizz Buzz 题目描述这是 LeetCode 上的 412. Fizz Buzz ,难度为 简单。 写一个程序,输出从 1 到 n 数字的字符串表示。 如果 n 是 3 的倍数,输出 “Fizz”; 如果 n 是 5 的倍数,输出 “Buzz”; 如果 n 同时是 3 和 5 的倍数,输出 “FizzBuzz”。 示例:1234567891011121314151617181920n = 15,返回: 2021-10-12 模拟
LC 273. 整数转换英文表示 题目描述这是 LeetCode 上的 273. 整数转换英文表示 ,难度为 困难。 将非负整数 num 转换为其对应的英文表示。 示例 1:123输入:num = 123输出:"One Hundred Twenty Three"示例 2:123输入:num = 12345输出:"Twelve Thousand Three Hundred Forty Five" 2021-10-10 模拟
LC 441. 排列硬币 题目描述这是 LeetCode 上的 441. 排列硬币 ,难度为 简单。 你总共有 n 枚硬币,并计划将它们按阶梯状排列。 对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行可能是不完整的。 给你一个数字 n ,计算并返回可形成完整阶梯行的总行数。 示例 1:12345输入:n = 5输出:2解释:因为第三行不完整,所以返回 2 。示例 2:12345输入:n = 2021-10-09 二分 数学
LC 352. 将数据流变为多个不相交区间 题目描述这是 LeetCode 上的 352. 将数据流变为多个不相交区间 ,难度为 困难。 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。 实现 SummaryRanges 类: SummaryRanges() 使用一个空数据流初始化对象。 void addNum(int val) 向数据流中加入整数 val 。 int 2021-10-08 模拟 二分
LC 187. 重复的DNA序列 题目描述这是 LeetCode 上的 187. 重复的DNA序列 ,难度为 中等。 所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来找出所有目标子串,目标子串的长度 2021-10-07 哈希表 滑动窗口 前缀和 字符串哈希
LC 434. 字符串中的单词数 题目描述这是 LeetCode 上的 434. 字符串中的单词数 ,难度为 简单。 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例:12345输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 2021-10-06 模拟
LC 414. 第三大的数 题目描述这是 LeetCode 上的 414. 第三大的数 ,难度为 简单。 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1:12345输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:12345输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:123456输入:[2, 2, 3, 1]输出:1解释: 2021-10-05 模拟 排序 数组
LC 284. 顶端迭代器 题目描述这是 LeetCode 上的 284. 顶端迭代器 ,难度为 中等。 请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。 实现 PeekingIterator 类: PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。 int next() 返回数组中的下一个元素,并将指针移动到下个元素处。 bool 2021-10-04 模拟 数据结构
LC 482. 密钥格式化 题目描述这是 LeetCode 上的 482. 密钥格式化 ,难度为 简单。 有一个密钥字符串 S,只包含字母,数字以及 '-'(破折号)。其中,N 个 '-' 将字符串分成了 N+1 组。 给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 ' 2021-10-03 模拟
LC 166. 分数到小数 题目描述这是 LeetCode 上的 166. 分数到小数 ,难度为 中等。 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。 如果存在多个答案,只需返回 任意一个。 对于所有给定的输入,保证答案字符串的长度小于 $10^4$ 。 示例 1:123输入:numerator = 1, de 2021-10-03 哈希表 模拟 数学
LC 405. 数字转换为十六进制数 题目描述这是 LeetCode 上的 405. 数字转换为十六进制数 ,难度为 简单。 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 给定的数确保在 2021-10-01 模拟 位运算
LC 1436. 旅行终点站 题目描述这是 LeetCode 上的 1436. 旅行终点站 ,难度为 简单。 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。 题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点 2021-09-30 哈希表 模拟
LC 223. 矩形面积 题目描述这是 LeetCode 上的 223. 矩形面积 ,难度为 中等。 给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。 示例 1: 2021-09-29 容斥原理