- 博客(10)
- 收藏
- 关注
原创 算法训练day9(字符串)(补):翻转字符串里的单词、右旋转字符串、 实现 strStr()、重复的子字符串
给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。s = "反转后的字符串中不能存在前导空格和尾随空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。思路:双指针模拟,根据单词中间的空格来判断是否截取单词,代码如下。
2024-11-08 20:42:04
837
原创 算法训练day8(字符串)(补):反转字符串、反转字符串II、替换数字
提示编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。思路:直接双指针前后交换字符即可给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。k2kkk"bacdfeg""bacd"思路:直接无脑模拟。
2024-11-08 20:18:38
370
原创 算法训练day7(哈希表、双指针):四数相加II 、赎金信 、三数之和 、四数之和
比方说我代码里三个指针分别是前前后,如果a、b指针判断到本次符合条件,那么ab就会一直后移,知道拿到一个新的数,c是后指针就会前移。首先排序数组,从小到大排序,然后用abc来遍历数组,这里只要注意每个指针遍历的时候不要和上次遍历的重复就行了。思路:这道题的基本思路就是双指针,也可以说是三指针,用一种比较暴力的方式来遍历。,将对应字符出现次数减1,如果最后出现有负数的字符,就不能实现。四数之和是同理的,指针多了一个会显得更复杂,具体的直接看代码吧。注意,输出的顺序和三元组的顺序并不重要。
2024-11-08 19:57:25
569
原创 算法训练day6(哈希表): 有效的字母异位词 、两个数组的交集 、快乐数、两数之和
思路:我们遍历数组,每访问到一个元素nums[i],判断map中是否有target-nums[i]这个元素,如果有就返回,如果没有就加入当前元素即可。这边代码中用到了递归的思路,每次判断是否是为1,判断是否曾经出现过,如果都不是那么继续做处理,最后递归传递返回结果值即可。思路:记录新出现的值,如果本次的值在map中 出现过,那么就返回false。思路:使用map保存s出现过的字符,然后遍历t的字符,是否每个字符都出现即可。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。
2024-11-05 20:41:04
853
转载 哈希表(转载自代码随想录)
总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!
2024-11-05 20:10:34
17
原创 周日:链表总结
这里不贴什么官方的定义,就说一下我的理解,链表就是很多结点组成的一个线性表,其中结点可以自己定义,可以有自己的属性比如val什么的,一定会有一个next指针指向下一个结点。所以链表会有头结点,根据头结点可以遍历链表,链表有一个尾节点,尾节点指向null。
2024-11-03 19:34:52
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人