- 博客(164)
- 收藏
- 关注
原创 【leetcode】构建回文串检测(前缀思想+分析)
给你一个字符串 s,请你对 s 的子串进行检测。每次检测,待检子串都可以表示为 queries[i] = [left, right, k]。我们可以 重新排列 子串 s[left], …, s[right],并从中选择 最多 k 项替换成任何小写英文字母。如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。返回答案数组 answer[],其中...
2020-01-24 22:15:59
273
1
原创 【leetcode】最大整除子集(dp+pre数组记录路径)
给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。如果有多个目标子集,返回其中任何一个均可。示例 1:输入: [1,2,3]输出: [1,2] (当然, [1,3] 也正确)示例 2:输入: [1,2,4,8]输出: [1,2,4,8]链接:https://leetcode-cn...
2020-01-22 16:27:51
254
原创 【leetcode】网格中的最短路径 (bfs)
给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。示例 1:输入:grid =[[0,0,0],[1,1,0],[0,0,0],[...
2019-12-15 23:28:34
2194
原创 【leetcode】使结果不超过阈值的最小除数 (二分枚举)
给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个。每个数除以除数后都向上取整,比方说 7/3 = 3 , 10/2 = 5 。题目保证一定有解。示例 1:输入:nums = [1,2,5,9], threshold =...
2019-12-08 17:23:00
347
原创 【leetcode】停留在原地的方案数(dp)
有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。示例 1:输入:steps = ...
2019-12-07 20:58:13
414
原创 【leetcode】K 次串联后最大子数组之和 (前缀和,后缀和,分类讨论)
给你一个整数数组 arr 和一个整数 k。首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次。举个例子,如果 arr = [1, 2] 且 k = 3,那么修改后的数组就是 [1, 2, 1, 2, 1, 2]。然后,请你返回修改后的数组中的最大的子数组之和。注意,子数组长度可以是 0,在这种情况下它的总和也是 0。由于 结果可能会很大,所以需要 模(mod) 10^9 + ...
2019-12-04 21:58:51
279
原创 【leetcode】删除字符串中的所有相邻重复项II (双指针, 细节)
给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。你需要对 s 重复进行无限次这样的删除操作,直到无法继续为止。在执行完所有删除操作后,返回最终得到的字符串。本题答案保证唯一。示例 1:输入:s = “abcd”, k = 2输出:“abcd”解释:没有要删除的内容。示例 2:输入:s = “...
2019-12-03 16:58:55
690
原创 【leetcode】尽可能使字符串相等(滑动窗口)
给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可...
2019-12-03 15:49:17
344
原创 Can you solve this equation? (二分)
Now,given the equation 8x^4 + 7x^3 + 2x^2 + 3x + 6 == Y,can you find its solution between 0 and 100;Now please try your lucky.InputThe first line of the input contains an integer T(1<=T<=100)...
2019-12-02 18:00:12
254
原创 【leetcode】丑数III (二分枚举+容斥定理)
请你帮忙设计一个程序,用来找出第 n 个丑数。丑数是可以被 a 或 b 或 c 整除的 正整数。示例 1:输入:n = 3, a = 2, b = 3, c = 5输出:4解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10… 其中第 3 个是 4。示例 2:输入:n = 4, a = 2, b = 3, c = 4输出:6解释:丑数序列为 2, 3, 4, 6, 8...
2019-12-02 17:16:30
625
原创 【codeforces】sweet Problem (规律,二分)
You have three piles of candies: red, green and blue candies:the first pile contains only red candies and there are rr candies in it,the second pile contains only green candies and there are gg cand...
2019-12-02 15:28:53
414
原创 【算法总结】双指针——时间复杂度与空间复杂度的利器!
双指针,就是用两个变量在数组中经过某种形式的移动得到结果的操作。一般时间复杂度为O(n),空间复杂度O(1). 双指针用途广泛,熟悉的归并快排,二分查找就是用的双指针。下面就总结一下双指针这个算法技巧。本文双指针的内容有:双指针的各种类型。双指针的应用。第一部分:我认为双指针一般有两种类型:前后指针,左右指针。**前后指针:**也可以称为快慢指针。假设有两个指针 l 和 r ,l为...
2019-11-29 22:23:11
5086
原创 【leetcode】替换后的最长重复字符(滑动窗口)
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。注意:字符串长度 和 k 不会超过 104。示例 1:输入:s = “ABAB”, k = 2输出:4解释:用两个’A’替换为两个’B’,反之亦然。示例 2:输入:s = “AABABBA”, k = 1输出:4解...
2019-11-29 15:51:40
268
原创 【算法总结】二分查找详解+运用 (持续更新)
本文二分查找内容有:解读二分查找非递归代码的实现:查找值,查找左边界,查找有边界。在数组中运用C++的二分查找函数 binary_search, lower_bound, upper_bound.向量,集合里二分查找函数的运用。二分查找的运用。第一部分:1. 非递归代码实现查找值先看代码:#include <iostream>#include <algori...
2019-11-28 14:40:12
478
原创 【leetcode】Z字形变换(桶)
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:st...
2019-11-23 10:10:45
221
原创 【leetcode】乘积最大子序列 (线性dp)
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。链接:https://leetcode-cn.com/problems/maximum-pro...
2019-11-21 16:28:25
287
原创 买卖股票的最佳时机(分治,dp)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是...
2019-11-20 15:50:15
1641
1
原创 【leetcode】不同的子序列(01背包)
给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)示例 1:输入: S = “rabbbit”, T = “rabbit”输出: 3解释:如下图所示, 有 3 种可以从 S 中得到 ...
2019-11-20 14:52:30
215
原创 【leetcode】解码方法(dp)
一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (2...
2019-11-19 15:38:15
195
原创 【leetcode】最长有效括号(线性dp,栈)
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”链接:https://leetcode-cn.com/problems/longest-valid-parentheses方法一:动态规划 ...
2019-11-18 16:08:42
274
原创 【leetcode】最长回文子串(区间dp)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”链接:leetcode原题思路分析:这题是区间dp经典题目。先来看看回文子串的定义:长度为1:a, b. 单个字符就是一个回文串长度为2:aa, bb....
2019-11-16 16:54:55
383
原创 最大连续子列和(多种方法)
题目地址在此经典问题,求最大连续区间和。暴力的方法就不说了。这里说三种方法:分治,动态规划,在线处理。方法一:分治 O(nlgn)要求[1,n]的最大连续区间和,可以将区间分成[l,mid],[mid,r],即左右两半。此时,有三种情况。1:该连续区间全部在左半部分。2:该连续区间全部在右半部分。3:该连续区间出现在中间,即a[mid]在区间里。对于情况1,2就是递归左子树,右子...
2019-11-14 23:27:40
464
原创 【蓝桥杯】2019国赛B组 101串(dfs剪枝)
“01串”指的是由0和1组成的字符串。蒜头君是火箭少女101的铁杆粉丝,他想知道:长度为30的01串中,有多少串含有子串“101”.思路分析:其实就是用dfs枚举2^30种情况。如果纯暴力就是枚举完每一个长度为30的字符串里再加一个循环判断里面是否含有子串"101"。虽然此题没有时间限制,只要填结果,但是我们要有一颗优化的心!在枚举的过程中,即字符串长度<=30中,如果已经发现有1...
2019-11-13 21:45:25
431
原创 【poj3061】Subsequence (尺取,二分)
SubsequenceTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 28313 Accepted: 11883DescriptionA sequence of N positive integers (10 < N < 100 000), each of them less than or equal 1...
2019-11-13 20:11:21
285
原创 【蓝桥杯】递增三元组 (二分, lower_bound, upper_bound)
有三个数组A,B,C,每个数组中有n个数,你可以从每个数组中找一个数,使得Ai<Bj<Ck ,(1<=I,j,k<=n)(1<=n<=100000,1<=Ai,Bj,Ck<=1000000),求最多可以组出多少三元组Input有多组输入第一行输入n接下来三行输入A,B,C三个数组,每个数组n个数Output每行一个整数,表示最多有多少三元...
2019-11-11 18:27:31
346
原创 【蓝桥杯】明码(运算符, 进制转换)
汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16行,布局是:第1字节,第2字节第3字节,第4字节…第31字节, 第32字节1234这道题目是给...
2019-11-11 15:29:15
286
原创 【哈夫曼树】构造哈夫曼树(结构体优先队列)
哈夫曼树这里就不介绍了。这里主要是想处理一下自己写构造哈夫曼树时遇到的问题。一开始,我是建了一个存结构体指针的优先队列,以权值为标准从小到大排序,然后选最小和次小节点组成父节点。但是运行后权值的排序是乱的。既不是从小到大也不是从大到小。在找了许多篇博客才终于明白,指针容器是不推荐的。它会有很多问题。但是,我们需要用到优先队列进行O(lgn)的插入,又要存放节点的指针。这该如何操作呢?我们可...
2019-11-10 13:49:03
789
1
原创 【leetcode】合并区间(优先级排序)
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路分析:...
2019-11-08 21:04:46
370
1
原创 【蓝桥杯】发现环(dfs搜环节点)
问题描述 小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能...
2019-11-08 17:56:51
365
原创 【蓝桥杯】合根植物(并查集)
问题描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1...
2019-11-05 16:23:07
306
原创 【PTA】7-14 喊山 (图bfs)
7-14 喊山 (30 分)喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newssho...
2019-11-04 16:06:21
1844
原创 【leetcode】交换字符串中的元素(并查集)
给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。你可以 任意多次交换 在 pairs 中任意一对索引处的字符。返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。示例 1:输入:s = “dcab”, pairs = [[0,3],[1,2]]输出:“bacd”解释:交换...
2019-11-02 17:08:31
793
原创 【leetcode】串联字符串的最大长度(dfs回溯,位压缩)
给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解 s 中最长长度。示例 1:输入:arr = [“un”,“iq”,“ue”]输出:4解释:所有可能的串联组合是 “”,“un”,“iq”,“ue”,“uniq” 和 “ique”,最大长度为 4。示例 2:输入:arr...
2019-10-30 23:06:46
905
原创 【运算符】算法中的逻辑运算技巧总结
刷题的时候时常可以遇到运用逻辑运算巧妙减少复杂度的题,在此总结一下各种逻辑运算的技巧与应用。1.按位与(&)对数的二进制位进行操作,若两位同时为1,则为1,否则为0.例如: 10(1010)和5(0101), 10&5 = 0(0000)应用:取一个数在二进制下想要的位数。例如:a = 10(1010),想取a的后两位,则令b=(0011),a&b=0010. 按...
2019-10-30 22:30:56
1171
原创 【leetcode】删除子文件夹(字典树)
你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。我们这样定义「子文件夹」:如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的子文件夹。文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:/ 后跟一个或者多个小写英文字母。例...
2019-10-30 15:45:25
616
原创 【字典树】统计难题(查询前缀出现次数)
统计难题Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串....
2019-10-28 16:51:53
823
原创 【线段树】Balanced Lineup(区间最值)
For the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things ...
2019-10-28 14:20:05
216
原创 Rain Water trapping接雨水(多种方法)
Sai Charan is a professional programmer such that whatever he finds interesting, he would immediately convert it into a problem and try to get an algorithm for it which is the stepping stone for solvi...
2019-10-27 21:25:52
549
原创 [poj2559]Largest Rectangle in a Histogram(多种方法详细介绍)
Largest Rectangle in a HistogramTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 33533 Accepted: 10940DescriptionA histogram is a polygon composed of a sequence of rectangles aligned at...
2019-10-26 22:26:45
625
原创 【线段树】I Hate It (区间最大值+单点修改)
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 128626 Accepted Submission(s): 47252Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某...
2019-10-24 21:44:10
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅