数据结构每日一题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;
}
相关推荐
凌肖战1 小时前
力扣网编程135题:分发糖果(贪心算法)
算法·leetcode
Tony沈哲2 小时前
OpenCV 图像调色优化实录:从 forEach 到并行 + LUT 提速之路
opencv·算法
遇见尚硅谷2 小时前
C语言:20250714笔记
c语言·开发语言·数据结构·笔记·算法
chao_7893 小时前
动态规划题解_零钱兑换【LeetCode】
python·算法·leetcode·动态规划
吃着火锅x唱着歌3 小时前
LeetCode 424.替换后的最长重复字符
linux·算法·leetcode
hans汉斯3 小时前
【计算机科学与应用】面向APT攻击调查的溯源图冗余结构压缩
网络·算法·安全·web安全·yolo·目标检测·图搜索算法
Maybyy3 小时前
力扣454.四数相加Ⅱ
java·算法·leetcode
MicroTech20253 小时前
微算法科技技术创新,将量子图像LSQb算法与量子加密技术相结合,构建更加安全的量子信息隐藏和传输系统
科技·算法·量子计算
没学上了4 小时前
Qt轮廓分析设计+算法+避坑
算法
用户9704438781164 小时前
taobao商品详情数据获取实战方法
算法·html