随笔分类 - LeetCode
LeetCode题解
摘要:题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。 你允许: 装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空 示例 1: (Fr
阅读全文
摘要:题目 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 示例: 限制: 0 hash(256); for (char c : s) { ++hash[c]; } for (char c : s) { if (hash[c] == 1) return c; } return '
阅读全文
摘要:题目 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 示例 2: 限制: 0 getLeastNumbers(vector& arr, int k) { priority_queue pq; for
阅读全文
摘要:题目 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。 给出两个矩形,判断它们是否重叠并返回结果。 示例 1: 示例 2: 提示
阅读全文
摘要:题目 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。 注意:每次拼写时,chars 中的每个字母都只能用一次。 返回词汇表 word
阅读全文
摘要:题目 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 示例 2: 示例 3: 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 进阶:请选用 C 语言的用户尝试使用 O
阅读全文
摘要:题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 1: 示例 2: 示例 3: 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者
阅读全文
摘要:题目 给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。 示例 1: 示例 2: 提示: 0 & pushed, vector& popped) {
阅读全文
摘要:题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示
阅读全文
摘要:题目 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例: 提示: 你可以假设 k 总是有效的,在输入数组不为空的情况下,1 ≤ k ≤ 输入数组的大小。 本题同
阅读全文
摘要:题目 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 提示: 你可以假设 k 总是有效的,在输入数组不为空的情况下,1 ≤ k ≤ 输入数组的大小。 本题同 "【LeetCode】239. 滑动窗口最大值" 思路一:暴力 对每个数,寻找包括当前数在内后面k个数最
阅读全文
摘要:题目 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 示例 2: 思路一:摩尔投票 先假设第一个数为超过半数,然后与下一个数进行比较,如果相等,则计数器加一,否则计数器减
阅读全文
摘要:题目 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 示例 1: 示例 2: 示例 3: 提示: 1 <= str1.length <=
阅读全文
摘要:题目 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 i+1 & A) { int sum = 0; for (auto n : A) { sum += n; } if (sum % 3 != 0) return fa
阅读全文
摘要:题目 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) 将元素 x 推入栈中。 pop() 删除栈顶的元素。 top() 获取栈顶元素。 getMin() 检索栈中的最小元素。 示例: 本题同 "【剑指Offer】面试题30. 包含min函数的栈"
阅读全文
摘要:题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: 提示: 各函数的调用总次数不超过 20000 次 本题同 "【LeetCode】155. 最小栈" 思路 把每次的最小值(之前最小值和新
阅读全文
摘要:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 示例 2: 示例 3: 示例 4: 提示: 10000 ump; Node cur = head
阅读全文
摘要:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 "深拷贝" 。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示: val:一个表示 Node.val 的整数。 ra
阅读全文
摘要:题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以
阅读全文
摘要:题目 请实现两个函数,分别用来序列化和反序列化二叉树。 示例: 你可以将以下二叉树: 本题同 "【LeetCode】297. 二叉树的序列化与反序列化" 思路一:递归 使用特殊符号(“ ”)表示空树。 代码 另一种写法
阅读全文

浙公网安备 33010602011771号