LC 149. 直线上最多的点数 题目描述这是 LeetCode 上的 149. 直线上最多的点数 ,难度为 困难。 给你一个数组 points,其中 $points[i] = [x_i, y_i]$ 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1: 123输入:points = [[1,1],[2,2],[3,3]]输出:3 示例 2:123输入:points = [[1,1],[3,2],[5,3], 2021-06-24 哈希表 数学 枚举
LC 剑指 Offer 15. 二进制中1的个数 题目描述这是 LeetCode 上的 剑指 Offer 15. 二进制中1的个数 ,难度为 简单。 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1:123输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00 2021-06-23 分治 位运算
LC 剑指 Offer 38. 字符串的排列 题目描述这是 LeetCode 上的 剑指 Offer 38. 字符串的排列 ,难度为 中等。 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:12输入:s = "abc"输出:["abc","acb","bac","bca",&q 2021-06-22 回溯算法 字符串
LC 401. 二进制手表 题目描述这是 LeetCode 上的 401. 二进制手表 ,难度为 简单。 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 “3:25” 。 (图源:WikiMedia - Binary clock samui moon.jpg ,许可协议:Attributi 2021-06-21 打表 二进制
LC 1600. 皇位继承顺序 题目描述这是 LeetCode 上的 1600. 皇位继承顺序 ,难度为 中等。 一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点,这个家庭里有人出生也有人死亡。 这个王国有一个明确规定的皇位继承顺序,第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) ,给定一个人 x 和当前的继承顺序,该函数返回 x 的下一继承人。12345Successor(x 2021-06-20 哈希表 单链表
LC 1239. 串联字符串的最大长度 题目描述这是 LeetCode 上的 1239. 串联字符串的最大长度 ,难度为 中等。 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 示例 1:12345输入:arr = ["un","iq","ue&qu 2021-06-19 DFS 二进制枚举 模拟退火 随机化 启发式搜索
LC 483. 最小好进制 题目描述这是 LeetCode 上的 483. 最小好进制 ,难度为 困难。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的最小好进制。 示例 1:123输入:"13"输出:"3"解释:13 的 3 进制是 111。示例 2:12 2021-06-18 数学 推公式
LC 127. 单词接龙 题目描述这是 LeetCode 上的 127. 单词接龙 ,难度为 困难。 字典 wordList 中从单词 beginWord和 endWord 的 转换序列 是一个按下述规格形成的序列: 序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。 给你两个单词 beginWo 2021-06-17 启发式搜索 双向 BFS AStar 算法
LC 65. 有效数字 题目描述这是 LeetCode 上的 65. 有效数字 ,难度为 困难。 有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+' 或 '-') 下述格式之一: 至少一位数字,后面跟着一个点  2021-06-17 模拟
LC 877. 石子游戏 题目描述这是 LeetCode 上的 877. 石子游戏 ,难度为 中等。 亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 假设 2021-06-16 博弈论 区间 DP
LC 852. 山脉数组的峰顶索引 题目描述这是 LeetCode 上的 852. 山脉数组的峰顶索引 ,难度为 简单。 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1) 使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > 2021-06-15 二分 三分
LC 374. 猜数字大小 题目描述这是 LeetCode 上的 374. 猜数字大小 ,难度为 简单。 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0): 2021-06-14 二分
LC 278. 第一个错误的版本 题目描述这是 LeetCode 上的 278. 第一个错误的版本 ,难度为 简单。 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool isBadVer 2021-06-13 二分
LC 1449. 数位成本和为目标值的最大数字 题目描述这是 LeetCode 上的 1449. 数位成本和为目标值的最大数字 ,难度为 困难。 给你一个整数数组 cost 和一个整数 target 。请你返回满足如下规则可以得到的 最大 整数: 给当前结果添加一个数位(i + 1)的成本为 cost[i] (cost 数组下标从 0 开始)。总成本必须恰好等于 target 。添加的数位中没有数字 0 。由于答案可能会很大,请你以字符串形式返 2021-06-12 动态规划 背包问题 完全背包
LC 518. 零钱兑换 II 题目描述这是 LeetCode 上的 518. 零钱兑换 II ,难度为 中等。 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1:1234567输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:123 2021-06-10 动态规划 背包问题 完全背包