- 博客(13)
- 收藏
- 关注
原创 240531 力扣 334. 递增的三元子序列
思路二:三个数字如果分别为first、second、third,则是first<second<third。遍历数组,如果检测到的数大于第三个数,那么third=该数,如果该数大于第一个数,那么second=该数,小于第一个数那就将该数设置为first。思路一:找到每个数字左边最小数字和右边最大数字,如果该数字大于左边最小,小于右边最大,则符合题意。三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6。不存在满足题意的三元组。
2024-06-01 18:20:42
415
原创 240530 力扣 238. 除自身以外数组的乘积
给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O( n)时间复杂度内完成此题。nums =[1,2,3,4]nums你可以在O(1)的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组额外空间。
2024-05-30 11:08:14
370
原创 240529 力扣 151. 反转字符串中的单词
但是,通过观察测试事例可以得知,单词和单词之间的空格可能不止一个,并且,句尾句首也可能会有一个或多个空格,在这种情况下按照空格分割可能会得到多个空字符串,此时如果将孔子渡船视作单词给其后面加上空格会造成连续空格的情况。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。最初的思路是,通过空格切分单词,得到字符串数组,交换单词顺序,在除了句尾以外的单词后面都加上空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。反转后的字符串中不能存在前导空格和尾随空格。
2024-05-30 11:00:46
1076
原创 240528 345. 反转字符串中的元音字母
因为是反转,我第一个想到用栈这个数据结构,先进后出,所以我的思路是两个for循环,第一个循环元音入栈,第二个循环元音出栈,自然形成反转。用两个指针遍历,一个从左开始,一个从右开始,直到两个指针都遇到元音,交换两个字母。最终两个指针左指针在右指针右边循环结束。判断是否是元音采取return "aeiouAEIOU".indexOf(ch) >= 0;,仅反转字符串中的所有元音字母,并返回结果字符串。比我的思路可以少一次for循环简单很多。,且可能以大小写两种形式出现不止一次。
2024-05-28 10:16:16
238
原创 240527 605. 种花问题
除了首尾两个数只需要判断相邻一位是否为0,只有当相邻为0时首尾才可以种花,其他数都要求左右两边都是0才可以种花,一位一位判断,直到种花的个数大于要求,即成立。假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。如果n为0,那么一定是成立的。此外,分为三种情况数组长度等于1,等于2,大于等于3。数组长度等于2时,只有当两个数都是0,n为1时,成立。数组长度等于1时,只有当该数为0,n为1时,成立。这种思路比较难想到有点像数学题。
2024-05-28 10:07:11
508
原创 240523 力扣 1071. 字符串的最大公因子
12,然后再将18除以12得到商1、余数6,再将12除以6得到商2、余数0,即得到最大公因数6。我们只关心每次除法的余数是否为0,为0即表示得到答案。而题目所要求的字符串最大公约式和传统的数字公约数不同,每次去除的子字符串需要相同(即a-b的b需要相同)解决这个数学问题的常见方法是辗转相除法,计算gcd(18,48)时,先将48除以18得到。自身连接 1 次或多次)时,我们才认定 “例如8和12的最大公因数为4。很明显这是个可以转化为递归的表达式。首先考虑最大公因数的概念,指能够。
2024-05-23 21:36:54
527
1
原创 240522 力扣 1768. 交替合并字符串
题目:给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回。"apbqcr"字符串合并情况如下所示:合并后: a p b q c r"apbqrs"注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。合并后: a p b q r s"apbqcd"注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。
2024-05-22 01:04:39
710
原创 【力扣面试经典150题】day6 209. 长度最小的子数组
已解答中等给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10如果你已经实现O(n)时间复杂度的解法, 请尝试设计一个时间复杂度的解法。
2023-10-24 10:17:08
107
原创 【力扣面试经典150题】day5 125. 验证回文串
需要更加熟悉对Java的string类和char类的基础函数。replaceAll函数第一个参数可以是正则式str.toLowerCase() string类转变为小写字母string类翻转Character.isLetterOrDigit(s.charAt(left)) 判断char字符是否是字母或数字s.charAt(left) string类下标为left的字符Character.toLowerCase(s.charAt(left)) 将字符变为小写字符。
2023-10-20 17:53:51
226
1
原创 【力扣面试经典150题】day4 80. 删除有序数组中的重复项 II
(中等)给你一个有序数组nums,请你删除重复出现的元素,使得出现次数超过两次的元素,返回删除后数组的新长度。不要使用额外的数组空间,你必须在修改输入数组并在使用 O(1) 额外空间的条件下完成。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下://是以“引用”方式传递的。也就是说,不对实参做任何拷贝// 在函数里修改输入数组对于调用者是可见的。
2023-10-20 17:08:37
147
1
原创 【力扣面试经典150题】day3 26. 删除有序数组中的重复项
给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。返回k。系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {
2023-10-19 15:55:51
277
原创 【力扣面试经典150题】day1 88. 合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [,2,,5,6] ,其中斜体加粗标注的为 nums1 中的元素。[1]
2023-10-17 19:43:35
184
原创 【力扣面试经典150题】day2 27.移除元素
如果要移除的元素恰好在数组的开头,例如序列 [1,2,3,4,5],当 val为 1 时,我们需要把每一个元素都左移一位。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。对比右指针对应的值和要求的值,如果相同则右指针向右,左指针不变。确保左指针之前的所有值就是最后输出的结果要求的值,即最后输出数组[0,left]的值。2、如果左指针的元素等于val,把右指针的值赋值到左指针位置,然后右指针左移一位。元素的顺序可以改变。
2023-10-17 19:22:01
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅