数据结构每日一题day7(顺序表)★★★★★

题目描述:从顺序表中删除其值在给定值s与t之间(包含s和 t,要求 s<t)的所有元素,若s或t不合理或顺序表为空,则返回 false,若执行成功则返回 true。

算法思想:

输入检查:若顺序表为空、指针为空或 s >= t,直接返回 false。

双指针覆盖法:用 k 记录保留元素的索引,i 遍历原数组。若元素不在 [s, t] 内,将其保留到 k 位置,k 递增。

更新表长:遍历结束后,表长设为 k,实现原地删除。

复杂度分析:时间复杂度O(n)空间复杂度O(1)

代码实现:

cpp 复制代码
#include <stdbool.h>
#define MAXSIZE 100  // 假设顺序表最大容量

typedef struct {
    int data[MAXSIZE];
    int length;
} SeqList;

bool DeleteBetweenSAndT(SeqList *L, int s, int t) {
    // 检查输入合法性:空指针、空表、s>=t
    if (L == NULL || L->length == 0 || s >= t) {
        return false;
    }

    int k = 0;  // 记录保留元素的索引
    for (int i = 0; i < L->length; i++) {
        // 若元素不在[s, t]内,则保留
        if (L->data[i] < s || L->data[i] > t) {
            L->data[k++] = L->data[i];
        }
    }

    L->length = k;  // 更新表长为保留元素的数量
    return true;
}
相关推荐
Tech Synapse1 小时前
基于Surprise和Flask构建个性化电影推荐系统:从算法到全栈实现
python·算法·flask·协同过滤算法
終不似少年遊*1 小时前
国产之光DeepSeek架构理解与应用分析04
人工智能·python·深度学习·算法·大模型·ds
天天扭码1 小时前
一分钟解决 | 高频面试算法题——最大子数组之和
前端·算法·面试
杰杰批1 小时前
力扣热题100——矩阵
算法·leetcode·矩阵
明月看潮生1 小时前
青少年编程与数学 02-016 Python数据结构与算法 28课题、图像处理算法
图像处理·python·算法·青少年编程·编程与数学
_GR1 小时前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
心想事“程”1 小时前
决策树详解+面试常见问题
算法·决策树·机器学习
照海19Gin3 小时前
数据结构中的宝藏秘籍之广义表
c语言·数据结构·算法
小oo呆3 小时前
【自然语言处理与大模型】模型压缩技术之剪枝
算法·机器学习·剪枝
bloxd yzh3 小时前
筛选法(埃氏筛法)C++
数据结构·算法