随笔分类 - LeetCode
LeetCode题解
摘要:题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 限制:1 & nums) { int size = nums.size(); unordered_map ump; for (auto n : nums) {
阅读全文
摘要:题目 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1],
阅读全文
摘要:题目 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 示例 1: 示例 2: 本题同 "【LeetCode】48. 旋转图像" 思路一:从外向内 外圈循环次数:n/2 每圈循环旋转四个矩形 代码 时间复杂
阅读全文
摘要:题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 限制:0 val val) { pre next = l1; l1 = l1 next; } else { pre next = l2; l2 = l2 next; } pre = pre next; } p
阅读全文
摘要:题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 限制:0 val val) { pre next = l1; l1 = l1 next; } else { pre next = l2; l2 = l2 next; } pre = pre next; } p
阅读全文
摘要:题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 提示: 1 exchange(vector& nums) { int i = 0, j = nums.size() 1; while (i < j) { while (
阅读全文
摘要:题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 说明: 用返回一个整数列表来代替打印 n 为正整数 思路 代码 时间复杂度:O(10^n) 空间复杂度:O(1)
阅读全文
摘要:题目 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共
阅读全文
摘要:题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 示例 2: 示例 3: 本题同 "【LeetCode】191. 位1的个数" 思路一:循环 循环二进制位数。 代码 时间
阅读全文
摘要:题目 根据 "百度百科" ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(
阅读全文
摘要:题目 0,1,,n 1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1: 示例 2: 限
阅读全文
摘要:题目 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。 我们这里说的距离是『曼哈顿距离』( Manha
阅读全文
摘要:题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。 对于每一个索引,我们可以通过从字符串 S 中
阅读全文
摘要:题目 给定一副牌,每张牌上都写着一个整数。 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X = 2 时返回 true。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 1
阅读全文
摘要:题目 在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。 车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝
阅读全文
摘要:题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 示例 2: 示例 3: 本题同 "【剑指Offer】面试题48. 最长不含重复字符的子字符串" 思路一:暴力遍历 以每个字符开始寻找最长子串。 代码 时间复杂度:O(n^2) 思路二:滑动窗口 将哈希表作为滑动窗口
阅读全文
摘要:题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 示例 2: 示例 3: 提示: s.length ump; int size = s.size(), res = 0; for (int i = 0, j = 0; j uset; int size =
阅读全文
摘要:题目 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 示例 2: 示例 3: 思路 dp[i]
阅读全文
摘要:题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 示例 2: 提示: 给定链表的结点数介于 1 和 100 之间。 思路一:单指针 先统计节点个数,然后从头开始走一半。 代码 时间复杂度:O(n) 空间复杂度:O(1) 思
阅读全文
摘要:题目 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 示例 1: 示例 2: 提示: 0 & A) { sort(A.begin(), A.end()); int res = 0; for (int i = 1; i <
阅读全文

浙公网安备 33010602011771号