力扣
文章平均质量分 60
力扣练习题
小米内推官_AngelDg
我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[每日一题]127:出现频率最高的前 K 个元素(LeetCode:前 K 个高频元素)
文章目录题目描述题解思路相关测试题 题目描述 有一个不为空且仅包含正整数的数组,找出其中出现频率最高的前 K 个数,时间复杂度必须在 O(n log n) 以内。 行数据包括两部分,一个正整数数组(数字间 ‘,’ 分隔)和一个正整数 K (1 ≤ K ≤ 数组长度),数组和 K 之间有一个空格。 输出包含前 K 个出现频率最高的数(出现频率相同时,较小的数在前),用 ', ’ 分隔,保证升序排列。 示例 1: 输入:1,1,1,2,2,3 2 输出:1,2 题解思路 首先遍历整个数组,并使用哈希表记录每原创 2021-04-06 14:29:45 · 1745 阅读 · 0 评论 -
[每日一题]22:只出现一次的数字(题目汇总解答)
题目一描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 题解代码 class Solution { public: int singleNumber(vector<int>& nums) ...原创 2020-03-29 10:03:08 · 301 阅读 · 0 评论 -
[每日一题]104:合并两个有序数组
文章目录题目描述题解思路: 题目描述 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出:[1,2,2,3,原创 2020-12-04 20:48:58 · 220 阅读 · 0 评论 -
[每日一题]94:可被三整除的最大和
题目描述 给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。 示例 1: 输入:nums = [3,6,5,1,8] 输出:18 解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。 示例 2: 输入:nums = [4] 输出:0 解释:4 不能被 3 整除,所以无法选出数字,返回 0。 示例 3: 输入:nums = [1,2,3,4,4] 输出:12 解释:选出数字 1, 3, 4 以及 4,它们的和是 12(可被 3 整除的最大和)。 提示: 1原创 2020-08-21 14:03:40 · 357 阅读 · 0 评论 -
[每日一题]90:亲密字符串
题目描述 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。 示例 1: 输入: A = "ab", B = "ba" 输出: true 示例 2: 输入: A = "ab", B = "ab" 输出: false 示例 3: 输入: A = "aa", B = "aa" 输出: true 示例 4: 输入: A = "aaaaaaabc", B = "aaaaaaacb" 输出: true 示例原创 2020-08-17 20:05:27 · 188 阅读 · 0 评论 -
[每日一题]87:移掉K位数字(小米OJ - 9)
题目描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = "1432219", k = 3 输出: "1219" 解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。 示例 2 : 输入: num = "10200", k = 1 输出: "200" 解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前原创 2020-08-16 22:54:27 · 271 阅读 · 0 评论 -
[每日一题]86:实现 Trie (前缀树)
题目描述 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.search("app"); // 返回 false trie.startsWith("app"); // 返回 true trie.insert("app"); trie.search("app原创 2020-08-16 18:13:20 · 167 阅读 · 0 评论 -
[每日一题]85:有效的括号
题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 代码解答: c原创 2020-08-13 22:33:40 · 215 阅读 · 0 评论 -
[每日一题]84:检测大写字母
题目描述 给定一个单词,你需要判断单词的大写使用是否正确。 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。 否则,我们定义这个单词没有正确使用大写字母。 示例 1: 输入: "USA" 输出: True 示例 2: 输入: "FlaG" 输出: False 注意: 输入是由大写和小写拉丁字母组成的非空单词。 题解代码 class Soluti原创 2020-08-11 10:55:57 · 341 阅读 · 0 评论 -
[每日一题]43:前K个高频单词
题目描述 给一非空的单词列表,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 示例 1: 输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2 输出: ["i", "love"] 解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注...原创 2020-04-22 19:00:41 · 492 阅读 · 0 评论 -
[每日一题]37:N叉树的层序遍历
题目描述 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 1000。 树的节点总数不会超过 5000。 解答代码 /* // Definition for a Node. class Node { public: ...原创 2020-04-09 21:53:32 · 223 阅读 · 0 评论 -
[每日一题]36:在每个树行中找最大值
题目描述 您需要在二叉树的每一行中找到最大的值。 示例: 输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9] 解答代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * Tree...原创 2020-04-09 21:21:58 · 228 阅读 · 0 评论 -
[每日一题]34:二叉树的层平均值
题目描述 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组. 示例 1: 输入: 3 / \ 9 20 / \ 15 7 输出: [3, 14.5, 11] 解释: 第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11]. 注意: 节点值的范围在32位有符号整数范围内。 解答代码: /** * De...原创 2020-04-09 14:56:54 · 186 阅读 · 0 评论 -
[每日一题]32:二叉树的后序遍历
题目描述 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归算法 解答代码 /** * Definition for a binary tree node. * struct TreeNode { * int...原创 2020-04-09 00:21:16 · 249 阅读 · 0 评论 -
[每日一题]31:二叉树的中序遍历
题目描述 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归算法 解答代码: /** * Definition for a binary tree node. * struct TreeNode { * int v...原创 2020-04-08 20:02:12 · 228 阅读 · 0 评论 -
[每日一题]30:二叉树的前序遍历
题目描述 给定一个二叉树,返回它的前序遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归算法 代码解答 /** * Definition for a binary tree node. * struct TreeNode { * int ...原创 2020-04-08 17:32:18 · 278 阅读 · 0 评论 -
[每日一题]29:逆波兰表达式求值
题目描述 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入: ["2", "1", "+", "3", "*"] 输出: 9 解释: ((2 + 1) * 3) = 9 示例 ...原创 2020-04-08 10:14:02 · 267 阅读 · 0 评论 -
[每日一题]25:用队列实现栈
题目描述: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者...原创 2020-04-07 18:42:32 · 311 阅读 · 0 评论 -
[每日一题]24:数组中的第K个最大元素
题目描述 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 暴力法 演示代码: class Solution { public: int findKthLargest(...原创 2020-04-07 17:56:26 · 198 阅读 · 0 评论 -
[每日一题]23:电话号码的字母组合
题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 解题思路 hash+DFS...原创 2020-03-31 10:17:28 · 319 阅读 · 0 评论 -
[每日一题]21:杨辉三角
题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] 题解代码 class Solution { public: vector<vector<int>...原创 2020-03-28 20:35:19 · 943 阅读 · 0 评论 -
[每日一题]20:字符串相乘与相加
题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 0-9。 num1 和 num2 均不以零开头,除非是数字 0 本身。 不...原创 2020-03-24 23:04:49 · 252 阅读 · 0 评论 -
[每日一题]19:反转字符串多题汇总
文章目录反转字符串反转字符串中的元音字母反转字符串 II反转字符串中的单词 III 反转字符串 题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:[“h”,“...原创 2020-03-23 18:57:00 · 253 阅读 · 0 评论 -
[每日一题]18:验证回文串
题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 示例 2: 输入: “race a car” 输出: false 思路: 从字符串开头与末端同时便利字符串 先判断字符串这个位置的字符是不是字母和...原创 2020-03-23 14:03:02 · 286 阅读 · 0 评论 -
[每日一题]5:反转字符串
题目1: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 C代码如下: int OneCountBinary(unsigned int n){ int count = 0; while(n){ if (n & 1){ ++count; } n = n >> 1; } return count; ...原创 2020-02-18 18:31:57 · 271 阅读 · 0 评论
分享