线性表元素的区间删除

简单动脑子,想了个n^2的,结果超时了

然后请教舍友,桥神给了我个o(n)的算法

如下

j对数组进行扫描,i对数组进行覆盖,找到符合要求的元素直接在原数组上进行覆盖即可,只需扫描一次数组。

List Delete( List L, ElementType minD, ElementType maxD ){
    int i,j;
    for(i=-1,j=0;j<=L->Last;j++) if(L->Data[j]<=minD||L->Data[j]>=maxD) L->Data[++i]=L->Data[j];
    L->Last=i;
    return L;
}

 我倒是想了个类似的,也是o(n),不过比这麻烦些

还是对数组扫描,找到一个不合适的数,从这开始的数就往前挪一个,找到两个,从第二个起开始挪两个,依次类推,也只需要扫描一次数组

上一篇:Spring Security:如何在Postman中优雅地测试后端API(前后端分离)


下一篇:springboot 自定义效验规则