- 博客(171)
- 资源 (1)
- 收藏
- 关注
原创 栈-227.基本计算器II(四则运算)
3.乘除号:计算数字与栈顶元素,并将栈顶元素替换为计算结果。不允许使用任何将字符串作为数学表达式计算的内置函数,比如。你可以假设给定的表达式总是有效的。,请你实现一个基本计算器来计算并返回它的值。2.减号:将数字的相反数压入栈;整数除法仅保留整数部分。1.加号:将数字压入栈;给你一个字符串表达式。
2024-06-11 23:36:41
439
原创 栈-删除字符串中所有相邻重复项
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。2.如果栈顶数据和当前数据相等则出栈,否则进栈。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。
2024-06-10 22:28:03
401
原创 双指针-151.反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。
2024-06-08 22:47:24
356
原创 双指针-27.原地移除元素
你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。元素的顺序可能发生改变。注意这五个元素可以任意顺序返回。中的前两个元素均为 2。
2024-06-02 23:32:43
221
原创 字符串-459重复字符串
可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。,检查是否可以通过由它的一个子串重复多次构成。可由子串 "ab" 重复两次构成。给定一个非空的字符串。解题KMP todo。
2024-06-02 23:30:09
254
原创 字符串-28.实现strstr-找出字符串中第一个匹配项的下标
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。
2024-06-02 22:56:33
321
原创 字符串-替换数字(栈)
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。打印一个新的字符串,其中每个数字字符都被替换为了number。输入一个字符串 s,s 仅包含小写字母和数字字符。
2024-05-22 23:10:07
199
原创 字符串-344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。
2024-05-22 22:56:35
185
原创 哈希-383.救赎金
解题思路:使用哈希,ransomNote入哈希则++,magazine如哈希则--,最后遍历ransomNote中如果存在大于0的值则说明是false,否则是true。
2024-05-20 23:31:51
281
原创 哈希-1.两数相加
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2024-05-19 22:20:10
245
原创 哈希-202快乐数
分析:1.逐个获取数字的每一位并且相加,判断概数是否为1,如果为1则return true。2.关键点:如果判断重复数,需要用hash来判断。编写一个算法来判断一个数。
2024-05-19 13:13:29
144
原创 哈希-350两数组的交集II
请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
2024-05-19 11:16:35
152
原创 哈希-349两个数组的交集
同时有个地方需要注意,需要踢掉重复的数据,所以每次赋值给结果数组后,需要在hash中去掉该值的标记。备注:取交集则数组的最大值为两个数组中最小长度。输出结果中的每个元素一定是。[4,9] 也是可通过的。
2024-05-18 22:44:12
163
原创 哈希-242有效的字母异位数
示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。你可以假设字符串只包含小写字母。
2024-05-17 23:58:30
184
原创 链表-203.移除链表元素
示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]否则则保存节点的前驱和后继,遇到相等的值则pre = tmp->next->next即可。示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]分析:如果是head->val == val则head = head->next。示例 2: 输入:head = [], val = 1 输出:[]
2024-05-07 00:02:20
249
原创 数组-59.螺旋矩阵II
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。这里每一种颜色,代表一条边,我们遍历的长度,可以看出每一个拐角处的处理规则,拐角处让给新的一条边来继续画。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是。就是因为在画每一条边的时候,一会左开右闭,一会左闭右闭,一会又来左闭右开,岂能不乱。一些同学做这道题目之所以一直写不好,代码越写越乱。这也是坚持了每条边左闭右开的原则。
2024-05-04 23:49:31
344
原创 数组:209.长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?所以 只用一个for循环,那么这个循环的索引,一定是表示 滑动窗口的终止位置。
2024-05-04 10:46:02
268
原创 数组-977有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。数组其实是有序的, 只不过负数平方之后可能成为最大数了。此时可以考虑双指针法了,i指向起始位置,j指向终止位置。
2024-05-03 19:17:40
194
原创 数组-27. 移除元素
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。元素的顺序可以改变。
2024-05-03 09:57:58
90
原创 01背包-- 最大报酬|工作安排
小明每周上班都会拿到自己的工作清单,工作清单内包含 n 项工作,每项工作都有对应的耗时时间(单位 h)和报酬,工作的总报酬为所有已完成工作的报酬之和,那么请你帮小明安排一下工作,保证小明在指定的工作时间内工作收入最大化。属于01背包,所以定义dp[i][j]代表处理前i项工作在j的时间段内可获取的最大报酬。t 代表该工作消耗的时长(单位 h, t > 0),w 代表该项工作的报酬。T 代表工作时长(单位 h, 0 < T < 1000000),输出小明指定工作时长内工作可获得的最大报酬。
2023-09-14 15:37:11
232
原创 背包问题---怎么选取物品,可以使得背包装的物品价值最大?
思路:对于每件物品,由于是不可分割的放入,所以,就有两种情况:该物品放入背包与该物品不放入背包;②DP[k][w]=max(DP[k-1][w],DP[k-1][w-wi]),当第k件物品的重量不大于w时。问怎么选取物品,可以使得背包装的物品价值最大?问怎么选取物品,可以使得背包装的物品价值最大?那么,状态确定好了,上面所描述的题目中,只要求出DP[4][8]就可以了。①DP[k][w]=DP[k-1][w],当第k件物品的重量大于w时。DP[k][w]怎么求呢,这就是。1)0-1背包问题的描述。
2023-09-14 14:21:38
418
原创 字符串子序列II
给定字符串 target和 source,判断 target是否为 source 的子序列。字符串 source 可能会很长(长度~=500,000),而 target是个短字符串(长度
2023-09-09 15:03:42
213
原创 阿里巴巴找黄金宝箱(V)--滑动窗口
一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子,每个箱子上面贴有一个数字。阿里巴巴念出一个咒语数字k(k=1,=-10000,
2023-09-09 00:53:31
226
原创 字符串子序列II
给定字符串 target和 source,判断 target是否为 source 的子序列。字符串 source 可能会很长(长度~=500,000),而 target是个短字符串(长度<=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,”abc”是”aebycd”的一个子序列,而”ayb”不是)。第二行为source,长字符串(长度 ~= 500,000)最后一个子序列的起始位置,即最后一个子序列首字母的下标。
2023-09-04 00:36:28
105
原创 分苹果-异或
有A,B两个同学想要分苹果。A的想法是使用二进制进行,1 + 1相加不进一位,如(9 + 5 = 1001 +101 = 12)。B同学的想法是使用十进制进行,并且进一位。会输入两组数据,一组是苹果总数,一组分别是每个苹果的重量。如果让B同学在满足A同学的情况下获取到苹果的总重量且返回,如果不能则返回-1。备注:按照A同学的想法 5 + 6 = 3 (101 + 110 = 010)思路:异或运算,排序取最大。
2023-09-04 00:16:55
135
原创 补种胡杨树-滑动窗体
N 总种植数量 1<=N<=100000 M 未成活胡杨数量 1<=M<=N M 个空格分隔的数,按编号从小到大排列 K 最多可以补种的数量 0<=K<=M。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?标题:补种未成活胡杨 | 时间限制:1秒 | 内存限制:262144K。补种第7棵树,最多的连续胡杨棵树为6(5,6,7,8,9,10)补种到2或4结果一样,最多的连续胡杨棵树都是3。
2023-09-04 00:15:32
355
原创 dfs之深度遍历--岛屿数量
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。1.通过字符二维数组,从左上到右下,找到第一个'1'出现的位置。(水)组成的的二维网格,请你计算网格中岛屿的数量。2.通过该位置,进行深度搜索,将相邻的1清零。此外,你可以假设该网格的四条边均被水包围。
2023-08-23 14:18:30
130
原创 dfs之单词搜索
链接:https://leetcode.cn/problems/word-search/solutions/1312399/dan-ci-sou-suo-cyu-yan-xiang-jie-chao-ji-rvqm/单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。遍历条件:按照当前位置的上下左右4个方向进行遍历,flag的的值为0,且下一个字母与word匹配,执行条件:将flag对应的row,col位置值1,表示已经走过该坐标。作者:我自横刀向天笑。
2023-08-23 10:03:02
146
原创 dfs之有重复字符串的排列组合
考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。输入输出示例仅供调试,后台判题数据一般不包含示例。输入输出示例仅供调试,后台判题数据一般不包含示例。
2023-08-22 10:55:11
153
原创 华为OD机考--【磁盘容量排序】
请对它们按从小到大的顺序进行稳定排序,例如给定5块盘的容量,1T,20M,3G,10G6T,3M12G9M排序后的结果为20M,3G,3M12G9M,1T,10G6T。磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T = 1024G,1G = 1024M,现在给定n块磁盘的容量,由一个或多个格式为mv的子串组成,其中m表示容量大小,v表示容量单位,例如20M,1T,30G,10G6T,3M12G9M。1G和1024M容量相等,稳定排序要求保留它们原来的相对位置,故1G在1024M之前。
2023-08-03 21:59:13
1643
1
原创 数据结构之哈希表-----石头与宝石
LeetCodehttps://leetcode-cn.com/problems/jewels-and-stones/给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S...
2021-10-28 20:37:40
925
1
原创 题目73 统计字母出现次数从大到小排序(ok)
给出一个只包含字母的字符串,不包含空格,统计字符串中各个子字母(区分大小写)出现的次数,并按照字母出现次数从大到小的顺序输出各个字母及其出现次数如果次数相同,按照自然顺序排序,且小写字母在大写字母之前输入描述:输入一行仅包含字母的字符串输出描述:按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分割,注意末尾的分号字母和次数中间用英文冒号分隔示例:输入: xyxyXX输出:x:2;y:2;X:2;说明:每个字符出现的次数为2 故x排在y之前而小写字母x在大写
2021-10-20 23:05:00
4719
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人