练习题
晶晶的白水哥
努力 加油 赚钱娶崔晶大宝贝老婆,fighting
展开
-
LeetCode刷题顺序
简介是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-700 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。完全零基础可以刷题吗?不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。刷题顺序很重要吗?重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总原创 2020-11-18 18:26:23 · 8190 阅读 · 2 评论 -
LeetCode_哈希_ 第一题两数之和
算法原创 2020-09-02 09:00:52 · 161 阅读 · 0 评论 -
LeetCode_动态规划_53:最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000提示:1 <= nu原创 2021-08-16 15:53:59 · 73 阅读 · 0 评论 -
LeetCode_数字与字符串之间的转换_第412题:Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz",...原创 2021-03-02 10:13:01 · 112 阅读 · 0 评论 -
LeetCode_数字与字符串之间转换_第299题:猜数字游戏
你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:你写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个提示,告诉他的猜测数字中有多少位属于数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位属于数字猜对了但是位置不对(称为“Cows”, 奶牛)。朋友根据提示继续猜,直到猜出秘密数字。请写出一个根据秘密数字和朋友的猜测数返回提示的函数,返回字符串的格式为 xAyB ,x 和 y 都是数字,A 表示公牛,用B表示奶牛。xA 表示有 ..原创 2021-03-01 18:33:56 · 212 阅读 · 0 评论 -
LeetCode_字符的统计_第476题:数字的补数
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入: 5输出: 2解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入: 1输出: 0解释: 1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。注意:给定的整数保证在 32 位带符号整数的范围内。你可以假定二进制数不包含前导零位。class Solution {public: int findComp..原创 2021-03-01 14:25:20 · 77 阅读 · 0 评论 -
LeetCode_字符的统计_第696题:计数二进制子串
给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例 2 :输入: "10.原创 2021-01-26 16:48:51 · 214 阅读 · 0 评论 -
LeetCode_字符的统计_第657题:机器人能否返回原点
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在(0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示例 1:输入:...原创 2021-01-18 16:35:59 · 112 阅读 · 0 评论 -
LeetCode_字符的统计_第423题:从英文中重建数字
给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。注意:输入只包含小写英文字母。输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。输入字符串的长度小于 50,000。示例 1:输入: "owoztneoer"输出: "012" (zeroonetwo)示例 2:输入: "fviefuro"输出: "45" (fourfive)class Solution {public:原创 2021-01-18 16:11:52 · 145 阅读 · 0 评论 -
LeetCode_字符的统计_第451题:根据字符出现的频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:"Aabb"输出:"原创 2021-01-14 11:02:23 · 118 阅读 · 0 评论 -
LeetCode_字符的统计_第49题:字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。// 把排好序的字符串作为主键, 值为 字符串的位置class Solution {public: vector<vect...原创 2021-01-04 18:37:01 · 61 阅读 · 0 评论 -
LeetCode_字符的统计_第242题:有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?//法1:哈希class Solution {public: bool isAnagram(s.原创 2021-01-04 16:39:27 · 92 阅读 · 0 评论 -
LeetCode_字符串统计_第383题:赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母。canConstruct("a", "b") -> falsecanConst.原创 2021-01-04 16:19:31 · 89 阅读 · 0 评论 -
LeetCode_字符的统计_第389题:找不同
给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"示例 3:输入:s = "a", t = "aa"输出:"a"示例 4:输入:s = "ae", t = "aea"输出:"a"提示:0 &l...原创 2020-12-31 11:32:03 · 84 阅读 · 0 评论 -
LeetCode_字符的统计_第387题:字符串中第一个唯一的字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:你可以假定该字符串只包含小写字母。//直接哈希class Solution {public: int firstUniqChar(string s) { int len = s.length(); int hashMap[26] = {0}; //初始..原创 2020-12-29 18:11:30 · 56 阅读 · 0 评论 -
LeetCode_翻转字符串_第151题:翻转字符串中的单词
给定一个字符串,逐个翻转字符串中的每个单词。说明:无空格字符构成一个 单词 。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。示例 1:输入:"the sky is blue"输出:"blue is sky the"示例 2:输入:" hello world! "输出:"world! hello"解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:...原创 2020-12-29 17:10:20 · 88 阅读 · 0 评论 -
LeetCode_字符串的反转_第557题:反转字符串中的单词
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution {public: string reverseWords(string s) { int len = s.length();..原创 2020-12-25 17:05:12 · 127 阅读 · 0 评论 -
LeetCode_字符串的反转_第541题:字符串的反转Ⅱ
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"提示:该字符串只包含小写英文字母。给定字符串的长度和 k 在 [1, 10000] 范围内。class Solution {public: s...原创 2020-12-25 16:31:54 · 101 阅读 · 0 评论 -
LeetCode_字符串反转_第344题:反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H".原创 2020-12-24 22:59:29 · 73 阅读 · 0 评论 -
LeetCode_单词_第58题:最后一个单词
给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: "Hello World"输出: 5class Solution {public: int lengthOfLastWord(string s) { if(s.empty()) ...原创 2020-12-24 22:46:22 · 104 阅读 · 0 评论 -
LeetCode_单词_第434题:字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。/**思路:* 当前不为空格 但是下一个为空格时 就找到一个单词*/class Solution {public: int countSegments(string s) {原创 2020-12-24 22:13:41 · 91 阅读 · 0 评论 -
LeetCode_公共前缀_第14题:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。/**思路:* 垂直搜索 找到不相等 或者 是找到最后一个 就返回*/class Solution {public: string lo...原创 2020-12-24 21:19:45 · 66 阅读 · 0 评论 -
LeetCode_回文字符穿_第125题:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseclass Solution {public: bool isPalindrome(string s) { int len = s.length(); st原创 2020-12-24 19:08:28 · 68 阅读 · 1 评论 -
LeetCode_字符串_第520题:检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写,比如"Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"输出: False注意: 输入是由大写和小写拉丁字母组成的非空单词。class Solution {p..原创 2020-12-24 18:08:16 · 83 阅读 · 1 评论 -
LeetCode_前缀和数组_第238题:除自身以外数组的乘积
给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分...原创 2020-12-24 17:31:34 · 65 阅读 · 1 评论 -
LeetCode_前缀和数组_第304题:二维区域和检索,矩阵不可变
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1,col1) ,右下角为 (row2,col2)。上图子矩阵左上角(row1, col1) = (2, 1),右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]...原创 2020-12-24 14:15:33 · 93 阅读 · 0 评论 -
LeetCode_前缀和数组_第303题:区域和检索-数组不可变
给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引i到j(i≤j)范围内元素的总和,包含i、j两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))示例:输入:["NumArray", "sum...原创 2020-12-23 14:46:56 · 64 阅读 · 0 评论 -
LeetCode_二维数组变化_第289题:生命游戏
根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活细胞周围八个位置有超过三个活..原创 2020-12-21 17:23:39 · 125 阅读 · 0 评论 -
LeetCode_二维数组变换_第73题:矩阵置零
给定一个m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]class Solu...原创 2020-12-17 17:55:18 · 142 阅读 · 0 评论 -
LeetCode_特定顺序遍历二维数组_第498题:对角线遍历
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。示例:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,4,7,5,3,6,8,9]解释:说明:给定矩阵中的元素总数不会超过 100000 。class Solution {public: vector<int> findDiagonalOrder(vect...原创 2020-12-16 16:51:49 · 241 阅读 · 0 评论 -
LeetCode_二维数组变换_第566题:重塑矩阵
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解...原创 2020-12-16 16:49:14 · 113 阅读 · 0 评论 -
LeetCode刷题顺序_特定顺序遍历二维数组_第59题:螺旋矩阵Ⅱ
给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> res(n, vector<i...原创 2020-12-14 15:32:24 · 171 阅读 · 0 评论 -
LeetCode_特定顺序遍历二维数组_第54题:螺旋矩阵
给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]class Solution {public:...原创 2020-12-14 14:21:59 · 159 阅读 · 0 评论 -
LeetCode_数组的旋转_第189题:旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]...原创 2020-12-07 18:18:18 · 60 阅读 · 0 评论 -
LeetCode_二维数组及滚动数组_第419题:甲板上的战舰
419. 甲板上的战舰难度中等79给定一个二维的甲板, 请计算其中有多少艘战舰。战舰用'X'表示,空位用'.'表示。你需要遵守以下规则:给你一个有效的甲板,仅由战舰或者空位组成。 战舰只能水平或者垂直放置。换句话说,战舰只能由1xN(1 行, N 列)组成,或者Nx1(N 行, 1 列)组成,其中N可以是任意大小。 两艘战舰之间至少有一个水平或垂直的空位分隔- 即没有相邻的战舰。示例 :X..X...X...X在上面的甲板中有2艘战舰。无效样例 :...原创 2020-12-05 18:54:55 · 179 阅读 · 0 评论 -
LeetCode_二维数组及滚动数组_第598题:范围求和Ⅱ
给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入:m = 3, n = 3operations = [[2,2],[3,3]]输出: 4解释:初始状态...原创 2020-12-05 17:19:04 · 106 阅读 · 0 评论 -
LeetCode_二维数组及滚动数组_第661题:图片平滑器
包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度(向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[0, 0, 0],[0, 0, 0],[0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) = 平均(0.75) = 0对于点 (0,1...原创 2020-12-05 16:01:56 · 97 阅读 · 0 评论 -
LeetCode_二维数组及滚动数组_第119题:杨辉三角Ⅱ
给定一个非负索引k,其中 k≤33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?class Solution {public: vector<int> getRow(int rowIndex) { vector<int> res(rowIndex + 1, 1); //初始化 if(rowIndex...原创 2020-12-03 22:52:20 · 72 阅读 · 0 评论 -
LeetCode_二维数组及滚动数组_第118题:杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<...原创 2020-12-03 19:45:26 · 129 阅读 · 0 评论 -
LeetCode_数组的改变,移动_第283题:移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。法1:前移非零数 末尾 补零class Solution {public: void moveZeroes(vector<int>& nums) { int len = nums.size(); .原创 2020-12-03 17:25:22 · 55 阅读 · 0 评论