![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
暴力刷题日记
暴力刷题
.Passion
欢迎来看我的博客 ,原博客地址: https://www.cnblogs.com/lyr-2000/
现决定重新启用博客园的博客,一部分比较浅的笔记将写到这个博客上
欢迎打扰,另外,个人博客网站也搭建成功,欢迎打扰:
https://lyr-2000.github.io/
展开
-
数字字符串转化IP地址
题目描述现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。例如:给出的字符串为"25525522135",返回[“255.255.22.135”, “255.255.221.35”]. (顺序没有关系)示例1输入复制“25525522135”返回值复制[“255.255.22.135”,“255.255.221.35”]IP地址转换class Solution {public: /** * * @param s st原创 2021-01-25 20:00:46 · 508 阅读 · 0 评论 -
LRU 缓存结构
题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数x,表示g原创 2021-01-24 03:13:03 · 237 阅读 · 0 评论 -
地牢逃脱
题目描述给定一个 n 行 m 列的地牢,其中 ‘.’ 表示可以通行的位置,‘X’ 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。输入描述:每个输入包含 1 个测试用例。每个测试用例的第一行包含两个整数 n 和 m(1 <= n, m <= 50),表示地原创 2021-01-10 23:41:49 · 132 阅读 · 0 评论 -
合唱团#dp# 子序列连乘的最大值
题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 ai(-50 <= ai <= 50)。接下来的一行包含两个整数,k 和 d (1 <原创 2021-01-10 23:01:10 · 105 阅读 · 0 评论 -
leetcode. 476 数字的补数,#取反,位运算
476. 数字的补数Difficulty: 简单给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入: 5输出: 2解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入: 1输出: 0解释: 1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。注意:给定的整数保证在 32 位带符号整数的范围内。你可以假定二进制数不包含前导零位。本题与 1009 相同SolutionLa原创 2020-12-27 13:31:26 · 94 阅读 · 0 评论 -
leetcode.762. 二进制中表示质数个计数位
762. 二进制表示中质数个计算置位Difficulty: 简单给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:输入: L = 6, R = 10输出: 4解释:6 -> 110 (2 个计算置位,2 是质数)7原创 2020-12-27 13:20:42 · 99 阅读 · 0 评论 -
快速幂算法模板
a 的 b 次方对 p 取模的值。输入格式三个整数 a,b,p ,在同一行用空格隔开。输出格式输出一个整数,表示a^b mod p的值。数据范围0≤a,b,p≤109数据保证 p≠0输入样例:3 2 7输出样例:2#include <bits/stdc++.h>using namespace std;int main(void) { int a,b,p;cin>>a>>b>>p; int res =原创 2020-12-26 23:38:38 · 103 阅读 · 0 评论 -
leetcode 97. 交错字符串 #dp #掌握!
97. 交错字符串Difficulty: 困难给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s<sub style="display: inline;">1</sub> + s<sub style="display: inline;">2</sub&原创 2020-12-25 23:16:10 · 87 阅读 · 0 评论 -
leetcode .90 子集 #排列组合题目
90. 子集 IIDifficulty: 中等给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。**说明:**解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]SolutionLanguage: ****class Solution {public: vector<vector<int>> subsetsW原创 2020-12-25 22:33:51 · 81 阅读 · 0 评论 -
leetcode #特殊题目#排序## 56.合并区间
56. 合并区间Difficulty: 中等给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。**注意:**原创 2020-12-25 21:20:13 · 107 阅读 · 1 评论 -
leetcode #动态规划# .32 最长有效括号。
32. 最长有效括号Difficulty: 困难给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"SolutionLanguage: ****class Solution {public: int longestValidParentheses(string s) {原创 2020-12-25 20:53:53 · 89 阅读 · 0 评论 -
#dp # leetcode.10 正则表达式匹配问题
10. 正则表达式匹配Difficulty: 困难给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 **整个 **字符串 s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:转载 2020-12-25 16:56:46 · 109 阅读 · 0 评论 -
leetcode 30#串联所有单词的字串
30. 串联所有单词的子串Difficulty: 困难给定一个字符串 **s **和一些长度相同的单词 **words。**找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 **words **中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", words = ["foo","bar"]原创 2020-12-25 15:47:41 · 85 阅读 · 0 评论 -
字符串相乘【大数乘法】
43. 字符串相乘Difficulty: 中等给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长原创 2020-12-25 13:54:36 · 410 阅读 · 0 评论 -
字符串转整数算法
8. 字符串转换整数 (atoi)Difficulty: 中等请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽原创 2020-12-25 13:34:33 · 253 阅读 · 0 评论 -
leetcode 10.罗马数字转整数
13. 罗马数字转整数Difficulty: 简单罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,原创 2020-12-25 12:32:59 · 68 阅读 · 0 评论 -
leetcode #22 括号生成算法
22. 括号生成Difficulty: 中等数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]SolutionLanguage: ****class Solution {public: vector<st原创 2020-12-25 11:48:27 · 91 阅读 · 0 评论 -
N数组 topK问题 解法
题目描述有N个长度不一的数组,所有的数组都是有序的,请从大到小打印这N个数组整体最大的前K个数。例如,输入含有N行元素的二维数组可以代表N个一维数组。219, 405, 538, 845, 971148, 55852, 99, 348, 691再输入整数k=5,则打印:Top 5: 971, 845, 691, 558, 538[要求]时间复杂度为O(k \log k)O(klogk),空间复杂度为O(k \log k)O(klogk)C++优先队列是优先级高的在队首,定义优先级大小的方原创 2020-12-03 23:35:05 · 808 阅读 · 0 评论 -
最长公共子序列解法(dp)
题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。输入描述:输入包括两行,第一行代表字符串srr1,第二行代表字符串str2。\left( 1\leq length(str1),length(str2) \leq 5000 \right)(1≤length(str1),length(str2)≤5000)输出描述:输出包括一行,代表最长公共子串。示例1输入复制1AB2345CD12345EF输出复制2345备注:时间复杂度O原创 2020-12-03 23:20:12 · 206 阅读 · 0 评论 -
leetcode#331验证二叉树前序序列化(栈)
331. 验证二叉树的前序序列化Difficulty: 中等序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一个空节点。给定原创 2020-12-03 21:55:13 · 151 阅读 · 0 评论 -
算法刷题#提取特征
小明是一名算法工程师,同时也是一名铲屎官。某天,他突发奇想,想从猫咪的视频里挖掘一些猫咪的运动信息。为了提取运动信息,他需要从视频的每一帧提取“猫咪特征”。一个猫咪特征是一个两维的vector<x, y>。如果x_1=x_2 and y_1=y_2,那么这俩是同一个特征。 因此,如果喵咪特征连续一致,可以认为喵咪在运动。也就是说,如果特征<a, b>在持续帧里出现,那么它将构成特征运动。比如,特征<a, b>在第2/3/4/7/8帧出现,那么该特征将形成两个特征运.原创 2020-11-25 22:53:50 · 129 阅读 · 0 评论 -
暴力题#枚举总结
我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议我们在字节跳动大街的N个建筑中选定3个埋伏地点。为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在cosplay的队伍中逃出了字节跳动大街。只怪他的伪装太成功了,就是杨过本人来了也发现不了的!请听题:给定原创 2020-11-25 21:37:09 · 228 阅读 · 4 评论 -
暴力题总结
我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优原创 2020-11-25 21:15:32 · 141 阅读 · 0 评论 -
刷题总结01
Convert the department list to preorder traversal of the name of department tree链接:https://www.nowcoder.com/questionTerminal/86dc86da50424b47b25ced3e9f97b056来源:牛客网输入[[“d1”, “d0”, “IT”], [“d2”, “d0”, “RD”], [“d0”, “”, “The Company”], [“d3”, “d0”, “HR”]]原创 2020-11-25 20:43:42 · 107 阅读 · 0 评论 -
leetcode#树#二叉树转单链表算法
面试题 17.12. BiNodeDifficulty: 简单二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。**注意:**本题相对原题稍作改动示例:输入: [4,2,5,1,3,null,6,0]输出: [0,null,1,null,2,null,3,null,4,null,5,null原创 2020-11-24 16:22:44 · 327 阅读 · 0 评论 -
硬币问题
面试题 08.11. 硬币Difficulty: 中等硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+1说原创 2020-11-24 14:30:24 · 188 阅读 · 0 评论 -
TOP k 模型总结
面试题 17.14. 最小K个数Difficulty: 中等设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))SolutionLanguage: 全部题目class Solution { public int[] s原创 2020-11-22 15:33:28 · 360 阅读 · 0 评论 -
leetcode#搜索#水域大小模型总结#19.水域大小
面试题 16.19. 水域大小Difficulty: 中等你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例:输入:[ [0,2,1,0], [0,1,0,1], [1,1,0,1], [0,1,0,1]]输出: [1,2,4]提示:0 < len(land) <=原创 2020-11-19 20:41:16 · 223 阅读 · 0 评论 -
leetcode#蓄水池抽样模型#398.随机数索引
398. 随机数索引Difficulty: 中等给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。示例:int[] nums = new int[] {1,2,3,3,3};Solution solution = new Solution(nums);// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。solution.pick(3)原创 2020-11-19 20:09:59 · 214 阅读 · 0 评论 -
leetcode#水题#318.最长单词长度乘积
318. 最大单词长度乘积Difficulty: 中等给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例 1:输入: ["abcw","baz","foo","bar","xtfn","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "xtfn"。示例 2:输入: ["a","ab","abc","d"原创 2020-11-19 19:21:43 · 166 阅读 · 0 评论 -
再看 N皇后问题暴力解法
题目描述已知正整数n,即在一个nxn的棋盘上放置n个棋子,使每行每列和每条对角线上都只有一个棋子,返回有多少种摆法方法。保证n小于等于15。测试样例:1返回:1import java.util.*;public class Queens { public int nQueens(int n) { Op op = new Op(); op.dfs(0,n); return op.result; } st原创 2020-11-19 14:32:47 · 325 阅读 · 0 评论 -
水题#floodfill算法实现
题目描述给定一个n乘m的矩阵map,其中map[i][j]表示坐标为(i,j)的格子,值为1代表该格子不能通过,0代表可以通过。现从(0,0)的格子走到(n - 1,m - 1),单位时间只能走一格,不能途径无法通过的格子,请返回最短时间。同时给定矩阵的大小n和m(n和m均小于等于100),并且一定能走到终点。import java.util.*;public class Flood { public int floodFill(int[][] map, int n, int m) {原创 2020-11-19 13:54:16 · 633 阅读 · 0 评论 -
水题#回溯#集合的子集
题目描述已知数组A和其大小n,请返回A的所有非空子集。要求A中元素个数不大于20且互异。各子集内部从大到小排序,子集间字典逆序排序。测试样例:[123,456,789]返回:{[789,456,123],[789,456],[789,123],[789],[456 123],[456],[123]}import java.util.*;public class Subset { public ArrayList<ArrayList<Integer>> getS原创 2020-11-19 12:49:33 · 359 阅读 · 0 评论 -
dp#水题#countWays
题目描述给定一个int[][] map(C++ 中为vector >)网格图,若map[i][j]为1则该点不是障碍点,否则为障碍点。另外给定int x,int y,表示网格的大小。现有一个机器人要从网格左上角走到右下角,只能走格点且只能向右或向下走。请返回机器人从(0,0)走到(x - 1,y - 1)有多少种走法。请将结果Mod 1000000007以防止溢出,并保证x和y均小于等于50。import java.util.*;public class Robot { final原创 2020-11-19 00:25:29 · 270 阅读 · 0 评论 -
leetcode#水题#680.验证回文字符串II
680. 验证回文字符串 ⅡDifficulty: 简单给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。SolutionLanguage: 全部题目解题思路i, j 两个指针 一起靠如果 p[i] !=p[j] ,只能删除一个,要么删除 i, 要么删除 j原创 2020-11-17 21:09:00 · 63 阅读 · 1 评论 -
leetcode#水题#572另一个子树
572. 另一个树的子树Difficulty: 简单给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s: 3原创 2020-11-17 19:12:04 · 86 阅读 · 2 评论 -
leetcode#水题#06.整数转换
面试题 05.06. 整数转换Difficulty: 简单整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。示例1: 输入:A = 29 (或者0b11101), B = 15(或者0b01111) 输出:2示例2: 输入:A = 1,B = 2 输出:2提示:A,B范围在[-2147483648, 2147483647]之间SolutionLanguage: 全部题目class Solution { public int convertInt原创 2020-11-17 18:45:41 · 106 阅读 · 0 评论 -
leetcode#水题#415.字符串相加
415. 字符串相加Difficulty: 简单给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式SolutionLanguage: 全部题目解题思路:大数乘法class Solution { public String addStr原创 2020-11-17 18:43:31 · 66 阅读 · 0 评论 -
leetcode#水题#1446.连续字符
1446. 连续字符Difficulty: 简单给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。示例 2:输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。示例 3:输入:s = "triplepilloo原创 2020-11-17 13:29:32 · 382 阅读 · 0 评论 -
leetcode#水题# 541.反转字符串
541. 反转字符串 IIDifficulty: 简单给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"提示:该字符串只包含小写英文字母。给定字符串的长度和 k 在 [1, 10000] 范围内。So原创 2020-11-17 13:23:28 · 86 阅读 · 0 评论