题目一
看到题目的第一想法:
两个指针,左右互换,需要注意的细节应该是循环的条件.
看了代码随想录的想法:
差不多,需要注意边界.
题目二
看到题目的第一想法:
想到一个比较复杂的快慢指针法,就是2k个元素是一个窗,在一个窗里fast走k步,slow在起始,如果属于前k,那么定义个指针i在fast和slow区间内做反转.
看了代码随想录的想法:
其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的.哈哈哈,果然是有优化空间.
题目三
看到题目的第一想法:
没什么想法,看起来好像很简单,但肯定有我不记得的细节
看了代码随想录的想法:
数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。
这么做有两个好处:
- 不用申请新数组。
- 从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。
这里也给大家拓展一下字符串和数组有什么差别,
字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。
在C语言中,把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。