数组数组理论基础数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。举一个字符数组的例子,如图所示:需要两点注意的是 数组下标都是从0开始的。 数组内存空间的地址是连续的 正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。例如删除下标为3的元素,需要对下标为3的元素后面的所有元素都要做移动操作,如图所示:而且大家如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。数组的元素是不能删的,只能覆盖。那么二维数组直接上图,大家应该就知道怎么回事了那么二维数组在内存的空间地址是连续的么?不同编程语言的内存管理是不一样的,以C++为例,在C++中二维数组是连续分布的。我们来做一个实验,C++测试代码如下:#include <iostream> using namespace std; void test_arr() { int array[2][3] = { {0, 1, 2},
28. 找出字符串中第一个匹配项的下标实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。思路KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。本篇将以如下顺序来讲解KMP, 什么是KMP KMP有什么用 什么是前缀表 为什么一定要用前缀表 如何计算前缀表 前缀表与next数组 使用next数组来匹配 时间复杂度分析 构造next数组 使用
VSCode运行C++代码下载C++扩展滚到描述下面,点击 GCC and Mingw-w64 on Windows点击 MSYS2下载msys2-x86_64-20240113.exe下载完成后,双击打开进行安装。跟随网页MSYS2上的步骤一步一步做。(建议安装路径不要更改选择默认路径)安装完打开 MSYS2 MINGW64。首先更新系统环境:pacman -Syu更新好后回推出安装mingw gccpacman -S mingw-w64-ucrt-x86_64-gcc写入Y,按下Enter安装完成后,输入:gcc --version获得以下结果继续输入:pacman -S --needed base-devel mingw-w64-x86_64-toolchain出现Enter a selection (default=all):按下Enter继续出现:: Proceed with installation? [Y/n]写入Y,按下Enter安装完成后,关闭MSYS2 MINGW64添加环境变量在path中添加C:\msys64\mingw64\bin打开cmd,依次输入:gc
一只胖橘