- 博客(64)
- 收藏
- 关注
原创 数据结构每日一题day11(链表)★★★★★
题目描述:有一个带头结点的单链表L,请设计一个算法查找其第1个数据值为e的结点,若存在则返回指向该结点的指针,若不存在则返回 NULL。返回结果:若找到匹配的结点,立即返回指向该结点的指针;若遍历结束未找到,返回NULL。遍历链表:从头结点后的第一个结点开始依次向后遍历,比较每个结点的数据域是否等于e。输入检查:若链表为空(仅有头结点),直接返回NULL。时间复杂度:O(n)空间复杂度:O(1)
2025-04-03 21:46:30
408
原创 数据结构每日一题day10(链表)★★★★★
题目描述:有一个带头结点的单链表L,请设计一个算法查找其第i个结点位置,若存在则返回指向该给点的指针,若不存在则返回NULL。遍历链表:从头结点后的第一个结点开始,依次向后遍历,直到找到第i个结点或链表结束。返回结果:若找到第i个结点,返回指向该结点的指针;输入检查:若链表为空(仅有头结点)或i ≤ 0,直接返回NULL。时间复杂度:O(n)空间复杂度:O(1)
2025-04-02 11:27:47
273
原创 数据结构每日一题day9(顺序表)★★★★★
题目描述:将两个有序顺序表A和B合并为一个新的有序顺表返回 true,合并失败则返回 false。双指针遍历:使用两个指针分别遍历A和B,比较当前元素大小,将较小者插入C,直至其中一个表遍历完毕。输入检查:若A、B或C为空指针,或合并后总长度超过顺序表最大容量,返回false。时间复杂度:O(m+n),其中m、n为A、B的长度,需遍历所有元素。更新表长:设置C的length为合并后总长度,返回true。剩余元素处理:将未遍历完的表中剩余元素全部追加到C中。空间复杂度:O(1),仅需常数级辅助变量。
2025-04-01 20:03:02
187
原创 数据结构每日一题day8(顺序表)★★★★★
遍历顺序表(从i=1开始),若当前元素data[i]不等于data[k],则将其保留到k+1位置,并更新k。题目描述:从有序顺序表中删除所有其值重复的元素,使其中所有元素的值均不同。更新表长:遍历结束后,表长设为k+1,直接截断后续元素。输入检查:若顺序表为空或指针为空,返回false。复杂度分析:时间复杂度O(n)空间复杂度O(1)使用指针k标记保留元素的末尾,初始位置为0。
2025-04-01 19:51:21
347
原创 数据结构每日一题day7(顺序表)★★★★★
题目描述:从顺序表中删除其值在给定值s与t之间(包含s和 t,要求 s<t)的所有元素,若s或t不合理或顺序表为空,则返回 false,若执行成功则返回 true。双指针覆盖法:用 k 记录保留元素的索引,i 遍历原数组。若元素不在 [s, t] 内,将其保留到 k 位置,k 递增。输入检查:若顺序表为空、指针为空或 s >= t,直接返回 false。更新表长:遍历结束后,表长设为 k,实现原地删除。复杂度分析:时间复杂度O(n)空间复杂度O(1)
2025-03-30 17:49:18
482
原创 数据结构每日一题day6(顺序表)★★★★★
双指针覆盖法:使用两个指针(逻辑上的索引),一个遍历原数组(i),另一个记录保留元素的位置(k)。筛选保留元素:遍历时,若当前元素不等于x,将其复制到k位置,并递增k。题目描述:对长度为n的顺序表L,删除顺序表中所有值为x的数据元素。更新表长:遍历结束后,将顺序表长度设为k,实现原地删除所有x元素。复杂度分析:时间复杂度O(n)空间复杂度O(1)
2025-03-29 17:51:36
322
原创 数据结构每日一题day5(顺序表)★★★★★
题目描述:从顺序表L中删除最小值元素并由函数返回被删元素的值。(假设顺序表L有最小值且最小值唯一)合法性检查:若顺序表为空或指针为空,返回特定错误值(如-1,根据题目假设可省略)。保存并删除元素:将最小值元素保存后,将其后所有元素前移一位覆盖该位置。查找最小值位置:遍历顺序表,记录当前最小值及其下标。复杂度分析:时间复杂度O(n)空间复杂度O(1)更新表长:顺序表长度减1,返回被删元素值。
2025-03-28 18:18:09
281
原创 数据结构每日一题day4(顺序表)★★★★★
题目描述:删除顺序表L中第i个位置的元素,若i的输入不合法,则返回 false;否则将被删元素赋给引用变量e,并将第i+1个元素及其后的所有元素依次往前移动一个位置,返回 true。合法性检查:若顺序表为空、指针为空或位置i不在有效范围(1 ≤ i ≤ length)内,返回false。元素前移:将第i+1到表尾的所有元素依次前移一位,覆盖被删元素的位置。保存被删元素:将第i个元素(对应数组下标i-1)的值赋给引用变量e。复杂度分析:时间复杂度O(n)空间复杂度O(1)
2025-03-27 10:23:28
472
原创 数据结构每日一题day3(顺序表)★★★★★
题目描述:顺序表L的元素递增有序排列,设计一个算法在插入元素x后保持该顺序表仍然递增有序排列,插入成功后返回插入元素所在位置,不成功返回-1。查找插入位置:遍历顺序表,找到第一个大于等于 x 的元素的位置 i;若所有元素均小于 x,则插入到表尾(i = length)。合法性检查:若顺序表已满(length == MAXSIZE)或指针为空,插入失败,返回 -1。元素后移:从表尾开始,将位置 i 及之后的元素全部后移一位,腾出插入位置。插入元素:将 x 存入位置 i,表长加 1,返回插入位置 i。
2025-03-26 11:25:05
1165
原创 数据结构每日一题day2(顺序表)★★★★★
合法性检查:若插入位置 i 不满足 1 ≤ i ≤ length+1 或顺序表已满,则插入失败。元素后移:从最后一个元素开始,将第 i 到第 length 个元素依次后移一位,腾出位置 i。题目描述:在顺序表L的第i个位置插入新元素e,成功返回true,不成功返回false。插入元素:将 e 放入位置 i-1(数组下标从 0 开始)。复杂度分析:时间复杂度O(n)空间复杂度O(1)更新长度:顺序表长度加 1。
2025-03-25 08:15:13
219
原创 数据结构每日一题day1
初始化指针:用两个下标分别指向顺序表的首元素(下标0)和末元素(下标length-1)。题目描述:设计一个高效算法,讲顺序表L的所有元素逆置。要求算法空间复杂度为O(1)算法思想:采用双指针法。交换元素:每次交换两个下标对应的元素,然后首指针右移,尾指针左移。终止条件:当首指针超过或等于尾指针时停止,确保所有元素被交换一次。复杂度分析:时间复杂度O(n)空间复杂度O(1)
2025-03-24 17:03:57
333
原创 关于string的函数
在使用这个函数的时候一定要注意的问题:他不是一个判断类型的函数,所以返回的不是一个bool类型,他如果找到了的话会直接返回位置,这是一个int类型,这个位置可能是0。所以在判断是否查找到时要注意使用静态成员变量std::string::npos。注意find和insert函数参数位置相反。
2025-03-04 16:57:44
166
原创 dfs算法
void dfs(graph g,int v,int visit[]){//当前顶点下标和访问数组。//如果是无向图要加两次边。int a,b,c;//a是起点,b是终点,c是权重。i++){ //构建一个图。i++){ //构建一个图。//分别是顶点数和边数。//对顶点进行初始化。
2025-03-04 02:08:55
418
原创 关于指针的回退
删除一个字符串中的重复字符且保持字符的相对位置不变。为什么在删除一个字符后j要回退?因为j保存的是一个数,当j指向的字符被删除之后,j就指向被删除字符的下一个字符了,同时j还自加,就会导致某些字符被跳过。比如abaacb其中第三个a就被跳过没有删除。力扣299猜数字游戏,也用到了删除字符串中的单个字符,每次删除完后马上要跳回原来的状态。比如:出的数字是11猜的数字也是11时候就被跳过了。
2025-03-04 01:13:54
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人