摘要:
思路: 先构建一个虚拟头结点,指向真正的头结点,让快慢指针都指向虚拟头结点 快指针从虚拟头结点开始后移,移动 n+1 步,即for循环中跳出条件写成 i<=n,正好满足 i=0 时,f 指向索引0的位置 for循环执行完毕之后,f 指针指向的就是第n个结点,此时 f 和 s 指针开始同时移动,当 f 阅读全文
摘要:
从一个数组中原地移除所有数值等于val的元素 返回移除后数组的新长度 思路: 双指针:一个快指针 f ,当 f 向的值与val值相等时,f++ 一个慢指针 s ,刚开始的指向与 f 的指向一样,当 f 的值与val不相等时,就把值存入s指向的地方 具体实现:for循环中嵌套 if 语句,注意 if 阅读全文
摘要:
next[ len ]表示的是模式串中以最后一个字符结尾的最长公共前后缀的长度! 这里为什么是len,因为向字符串S中加了一个空格当作哨兵 为什么加哨兵? gpt:加上哨兵(空格)的作用是为了让字符串的下标从 1 开始,从而简化代码中的索引操作。 阅读全文
摘要:
前缀:是指不包含最后一个字符的所有以第一个字符开头的连续字串 后缀:是指不包含第一个字符的所有以最后一个字符结尾的连续字串 j的值就是最长公共前后缀的值!!! 所以在方法的最后next[i] = j 最后返回的是 if (j == needle.length()) { return i - need 阅读全文