![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日一题
橘子味的茶二
我像一粒尘埃
展开
-
leet hot 100-9 找到字符串中所有字母异位词
遍历整个数组 每次把当前元素在容器中的次数减去1 表示这个当前维护的窗口里面s[i] 的次数需要满足的点-1,然后查看当前的窗口的大小是否大于指定的p的大小 只有窗口大小等于p的大小才能查看窗口里面的值是否全部满足条件,如果要大于窗口里面的值 需要将j往后面走 就从新把条件收回 如果cnt[j] 表示需要满足的条件j这一位 如果刚好满足 但是窗口要减小了 它不满足了 就要收回相关的满足条件 只到把窗口调整为p的大小。最后再查看一下满足的条件 是否等于p中不同字母的数量。时间复杂度O(n) 空间复杂度(n)原创 2024-02-27 14:41:15 · 290 阅读 · 0 评论 -
leet hot 100-8 无重复字符的最长子串
声明一个无序map容器,容器里面记录着窗口里面字符的数量 ,如果字符的数量大于1 遍历到s[i]的时候 数量+1 此时如果map里面相关的数量大于1 说明窗口里面有重复值 需要将相关的值减少1 维护最大不同字母数量。时间复杂度O(n) 空间复杂度(n)原创 2024-02-26 21:53:11 · 482 阅读 · 0 评论 -
leet hot 100-6 三数之和
从前往后定义第一个数字 first 开始遍历整个数组 然后要求 frist和上一个数字不重复否则就是重复组合。再定义第三个数字从后往前面数 三个数字相加直到加到 相加小于 0或者等于0为止 然后判断值 并记录答案。从frist往后遍历第二个数字 同样要求第二个数字不能重复。时间复杂度O(n^2) 空间复杂度(1)原创 2024-02-26 21:25:11 · 182 阅读 · 0 评论 -
leet hot 100-4 移动零
遍历数组 将非0数字 移动到数组前端 数字0就会被移动到数组末端。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:21:54 · 317 阅读 · 0 评论 -
leet hot 100-3 最长连续序列
如果是起始位置 就记录一下当前值 并把当前值从无序集合里面清除,然后去查看一下当前值+1是否存在。每一次去遍历数字 查看但当前数字是否为起始位置(它的前面是否有比它小一位的数字)存在的话就继续删除并+1 直到没有下一个值为止 期间维护一个最大值 最后返回。可以把所有的数字放到容器里面去 维护一个最大值。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:15:27 · 150 阅读 · 0 评论 -
leet hot 100-2 字母异位词分组
要求把含有相同字母的放到一起,我们可以遍历每一个字符串 将他们重新排序,将排序完是一样的字符串放在一起 用无序容器存放起来。然后遍历这个无序map容器将排序后相同的值放在一起。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:05:56 · 381 阅读 · 0 评论 -
leet hot 100-1 两数之和
当我们遍历一个新的数字的时候 减一下与目标值的差。然后得到的结果在容器里面查看是否存在。时间复杂度O(n) 空间复杂度(n)可以把当前数字放到容器里面去。原创 2024-02-24 10:57:30 · 190 阅读 · 0 评论 -
25. 剪绳子
例如当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到最大的乘积 18。绳子,请把绳子剪成 m 段(m、n都是整数,2≤n≤58 并且 m≥2)。分成的段长度 如果为 5 那么可以分成 2 3 乘积为 6 比5大。而 长度比5 大的数字 一定可以分成多段 让其乘积比本身的数字大。每段的绳子的长度记为 k[1]、k[2]、……如果为4 可以分成两段 2 * 2 乘积为 4 结果不变。如果结果为2 就res =2 再循环-3 并相乘。此题 经典小学数奥题目。原创 2024-02-07 15:29:20 · 206 阅读 · 0 评论 -
14. 不修改数组找出重复的数字
二分法思路: 每次分开半 遍历左边半的数据范围 l 到 mid 查看全部数字 在左边的范围的数字是否大于 范围本身(mid - l+1) 如果是 说明左边存在重复元素 不是的话 则是右边。抽屉原理 一共有n+1个苹果放到n个抽屉里面 那么一定至少有一个抽屉里面存放了 两只苹果。给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。请找出数组中任意一个重复的数,但不能修改输入的数组。的数组nums,数组中所有的数均在 1∼n。的范围内,其中 n≥1。给定一个长度为 n+1。原创 2024-02-06 10:57:40 · 362 阅读 · 0 评论 -
216. 组合总和 III
从1到9 的每一个数字都要遍历到 所有想找到不重复的数字组合 我们要按照顺序来遍历。原创 2023-09-15 12:31:52 · 85 阅读 · 0 评论 -
211. 添加与搜索单词 - 数据结构设计
211. 添加与搜索单词 - 数据结构设计。原创 2023-09-06 10:39:37 · 383 阅读 · 0 评论 -
209. 长度最小的子数组
如果当前范围内的长度大于或等于target的值 就把对应的start往后移动 直到条件不成立位置。设定两个指针从初始化位置开始往后遍历,start end 两个指针中间遍历一个长度的数组成员。for 循环让end每次都往后探 每次就让总值加上end所在下标对应的值。此题注定要遍历数组中的每一个成员 而且是从前到后的遍历。我们可以尝试一下双指针的算法。满足条件的时候就进行筛选。原创 2023-09-05 17:32:40 · 45 阅读 · 0 评论 -
LeetCode 208. 实现 Trie (前缀树)
此题用到了前缀和的知识点 可以把每一个字母都模拟成一个节点,那么一个节点最多有26个子节点。把一个单词插入到前缀树里面去 如果就节点就往下遍历 如果没有节点就创建节点并遍历到创建节点。如果有节点 就继续往下遍历 而且遍历到的最后一个节点必须有结束标志。(26个字母) 可以创建一个结构体 里面包含着26个字母。和搜索操作相同 遍历到最后不需要判断是否存在结束标志。原创 2023-09-04 11:18:18 · 235 阅读 · 0 评论 -
200. 岛屿数量
【代码】200. 岛屿数量。原创 2023-08-31 00:06:15 · 266 阅读 · 0 评论 -
199. 二叉树的右视图
此题为非常简单的bfs 只需要遍历一下每层的节点 并记录一下每层的最后一个节点的值即可。原创 2023-08-30 22:14:53 · 134 阅读 · 0 评论 -
190. 颠倒二进制位
在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,原创 2023-08-30 21:52:25 · 193 阅读 · 0 评论 -
189. 轮转数组
【代码】189. 轮转数组。原创 2023-08-25 14:52:08 · 82 阅读 · 0 评论 -
乘积最大子数组--动态规划
需要f g分别表示前1位置的最大值和最小值 用a来表示当前位置的值 那么最大值肯定在fa ga 或者a。假设有n个值 我们可以记录一下 第i个值的最大值是什么 怎么用到前面的值取判断。如果是正数 那么我们乘以后面第i-1位的最大值 可以得到当前位置的最大值。如果是负数 那么我们乘以后面第i-1位的最小值 可以得到当前位置的最大值。看到这个题的时候 要用DP的想法去做这道题。那么当前位置最小值怎么得到 同最大值一样。想到遍历到前面的值能不能为后面所用。第i个值 可能正数 也可能是负数。原创 2023-08-23 21:17:36 · 54 阅读 · 0 评论 -
64位整数乘法
求 a 乘 b 对 p 取模的值。输入格式第一行输入整数a,第二行输入整数b,第三行输入整数p。输出格式输出一个整数,表示a*b mod p的值。数据范围1≤a,b,p≤10^18输入样例:345输出样例:2a*b可以看作b个a相加比如3*7 %57的二进制 111可以表示为3*1+3*2+3*4把7换成11 二进制1011 可以表示为3*1+3*2+3*8using namespace std.原创 2021-09-16 09:51:36 · 137 阅读 · 0 评论 -
a^b(涉及到快速幂)
原题链接求 a 的 b 次方对 p 取模的值。输入格式三个整数 a,b,p ,同一行用空格隔开。输出格式输出一个整数,表示a^b mod p的值。数据范围0≤a,b≤10^91≤p≤10^9输入样例:3 2 7输出样例:2普通的计算 a的b次方 需要进行b次循环 把b个a相乘而快速幂的思想是:例子:3 7 2 3的七次方 对2去模7的.原创 2021-09-15 11:57:42 · 139 阅读 · 0 评论 -
删除链表的倒数第N个节点
收获:需要注意添加dummy头节点 这样不管原来的头节点有没有被删除都可以直接返回 dummy->next。原创 2022-11-20 17:02:12 · 89 阅读 · 0 评论 -
每日一题-第k个除数-13(包含寻找约数最快捷的方法)
给定两个整数 n 和 k,请你找到并输出能够整除 n 的第 k 小的正整数。输入格式一行,两个整数 n 和 k。输出格式输出能够整除 n 的第 k 小的整数。如果不存在,则输出 −1。数据范围1≤n≤1015,1≤k≤109。输入样例1:4 2输出样例1:2输入样例2:5 3输出样例2:-1最快寻找 约数的方法 注释#include <iostream>#include <cstring>#include <algorithm>#原创 2021-09-11 22:40:40 · 116 阅读 · 0 评论 -
每日一题-点-12
给定一个平面上的 N 个点,请你计算所有点对之间距离的平方和。输入格式第一行包含整数 N,表示点的个数。接下来 N 行,每行包含两个整数 X,Y,表示一个点的横纵坐标。注意,不保证所有点的位置各不相同。输出格式输出所有点对之间距离的平方和。数据范围1≤N≤105,−10000≤X,Y≤10000。输入样例:41 1-1 -11 -1-1 1输出样例:32思路:#include <iostream>#include <cstring>#inc原创 2021-09-02 14:26:57 · 138 阅读 · 0 评论 -
每日一题-乘车问题-11
乘车问题n 个班的小朋友乘大巴去郊游,第 i 个班有 ai 个人。每隔一段时间就会来一辆空大巴车,每个大巴车可以容纳 m 个小朋友。已知,在安排乘车时,必须按照 1 班,2 班,…,n 班的顺序,依次安排每个班的小朋友。同一个班的小朋友必须被安排在同一辆车内。也就是说,如果当前需要安排 i 班乘坐大巴,而此时大巴剩余的座位数量少于 ai,则让大巴先走,i 班以及后续班级共同等待下一辆大巴到来。请问,将所有小朋友接走,共需多少辆大巴?输入格式第一行包含整数 T,表示共有 T 组测试数据。每组原创 2021-09-02 13:22:06 · 432 阅读 · 0 评论 -
每日一题-砖块-10
砖块n 个砖块排成一排,从左到右编号依次为 1∼n。每个砖块要么是黑色的,要么是白色的。现在你可以进行以下操作若干次(可以是 0 次):选择两个相邻的砖块,反转它们的颜色。(黑变白,白变黑)你的目标是通过不超过 3n 次操作,将所有砖块的颜色变得一致。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含一个整数 n。第二行包含一个长度为 n 的字符串 s。其中的每个字符都是 W 或 B,如果第 i 个字符是 W,则表示第 i 号砖块是白色的,如果第 i 个字符是 B,则原创 2021-09-02 11:43:49 · 419 阅读 · 0 评论 -
每日一题-水果拼盘-9
水果拼盘某水果店以出售水果拼盘盈利。该店铺共提供两种拼盘:拼盘 1:包含 1 个苹果,1 个香蕉。拼盘 2:包含 1 个梨,1 个橙子,1 个香蕉。已知该店铺共有 a 个苹果,b 个梨,c 个橙子,d 个香蕉。拼盘 1 的利润为 e 元,拼盘 2 的利润为 f 元。水果店的生意很好,所有拼好的拼盘都会销售一空。请问,利用现有水果拼装水果拼盘,能够获得的最大利润是多少?注意,也许会有一些水果用不完,但这并不重要。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含原创 2021-09-01 11:30:48 · 483 阅读 · 0 评论 -
每日一题-亮灯时长-8
亮灯时长自习室内有一个智能灯。在 0 时刻,管理员会将打开电闸,并将灯点亮。在 M 时刻,管理员会直接拉下电闸,此时,如果灯处于点亮状态,则会因为断电而熄灭。在 0∼M 之间有 n 个不同时刻,不妨用 a1,a2,…,an 表示,其中 0<a1<a2<…<an<M。在这 n 个时刻中的每个时刻,管理员都会拨动一次智能灯的开关,使灯的状态切换(亮变灭、灭变亮)。现在,你可以最多额外指定一个时刻(也可以不指定),让管理员在此时刻也拨动开关一次。注意选定的时刻不能与 a1原创 2021-08-31 12:36:54 · 97 阅读 · 0 评论 -
每日一题-兔子跳-7
兔子条一只兔子位于二维平面的原点 (0,0) 处,它想通过一系列的跳跃,跳到点 (x,0) 处。给定一个长度为 n 的数组 a1,a2,…,an。兔子能从一个点跳到另一个点,当且仅当两点之间的距离等于上述数组中的某个元素的值。请问,兔子从 (0,0) 到 (x,0) 最少需要跳几次?注意,兔子可以跳到非整数坐标的点上。例如,当 x=4,a={1,3} 时,(0,0)→(1,0)→(4,0) 和 (0,0)→(2,5√)→(4,0) 均为合理最佳方案之一。输入格式第一行包含整数 T,表示共有原创 2021-08-30 21:43:51 · 152 阅读 · 0 评论 -
每日一题-移动石子-6
一共有 n 个箱子排成一排,从左到右依次编号为 1∼n。其中,第 i 号箱子中放有 ai 个石子。现在,你可以进行最多 d 次操作。每次操作可以将一个石子从一个箱子移动至另一个与其相邻的箱子里。我们希望通过合理操作使得 1 号箱子内的石子数量尽可能大。请问,这个最大可能值是多少?输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含两个整数 n 和 d。第二行包含 n 个整数 a1,a2,…,an。输出格式每组数据输出一行结果,表示答案。数据范围1≤T≤100,原创 2021-08-30 21:27:37 · 216 阅读 · 0 评论 -
每日一题-字符串的删减-5
给定一个由 n 个小写字母构成的字符串。现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x。请问,最少需要删掉多少个字母?如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。输入格式第一行包含整数 n。第二行包含一个长度为 n 的由小写字母构成的字符串。输出格式输出最少需要删掉的字母个数。数据范围3≤n≤100输入样例1:6xxxiii输出样例1:1输入样例2:5xxoxx输出样例2:0输入样例3:10xxxxxxxxxx原创 2021-08-30 19:45:35 · 310 阅读 · 0 评论 -
每日一题-三元数异或-4
三元数异或如果一个整数,其各个数位不包含 0,1,2 以外的数字,则称这个数为三元数。例如,1022,11,21,2002 都是三元数。给定一个可能很长的三元数 x,其首位数字(最左边那位)保证为 2,其他位数字为 0 或 1 或 2。我们规定,两个长度为 n 的三元数 a 和 b 可以通过三元异或运算 ⊙ 得到另一个长度为 n 的三元数 c。设 ai,bi,ci 分别表示 a,b,c 的第 i 位的数字,则 ci=(ai+bi)mod3。例如,10222 ⊙ 11021=21210。你的任务原创 2021-08-26 22:23:29 · 313 阅读 · 0 评论 -
每日一题-数字矩阵-3
数字矩阵给定一个 n×m 的整数矩阵,其中第 i 行第 j 列的元素为 aij。你可以进行任意多次如下操作:选择矩阵中的两个相邻元素,将它们均乘以 −1。同一个元素可以被选中多次。你需要通过上述操作,使得矩阵中所有元素的和尽可能大。计算并输出这个和的最大可能值。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含两个整数 n,m。接下来 n 行,每行包含 m 个整数,表示整个矩阵,其中第 i 行第 j 列的数为 aij。输出格式每组数据输出一行结果,表示矩阵的所有原创 2021-08-26 19:58:27 · 1472 阅读 · 0 评论 -
C++每日一题-二进制矩阵-2!!!
二进制矩阵给定一个 n×m 大小的二进制矩阵,矩阵中只包含 0 和 1。现在,你可以进行如下操作:选中一个 2×2 的子矩阵,改变其中 3 个元素的值(0 变为 1,1 变为 0)。你的任务是通过上述操作,将矩阵中的全部元素都变为 0。你的总操作次数不得超过 3nm 次。可以证明,答案一定存在。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 n,m。接下来 n 行,每行包含一个长度为 m 的 01 字符串,表示给定的二进制矩阵。输出格式每组数据第一行输出整原创 2021-08-25 21:29:53 · 354 阅读 · 0 评论 -
每日一题-唯一最小数-1
[数组的简单运用]给定一个长度为 n 的整数数组 a1,a2,…,an。请你找到数组中只出现过一次的数当中最小的那个数。输出找到的数的索引编号。a1 的索引编号为 1,a2 的索引编号为 2,…,an 的索引编号为 n。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。输出格式每组数据输出一行结果,即满足条件的数的索引编号,如果不存在满足条件的数,则输出 −1−1。数据范围1≤T≤2×1041≤n≤2×1原创 2021-07-18 23:25:14 · 151 阅读 · 0 评论