menu 小墨迹
more_vert
chevron_right 首页 » WEEK » 3-2 数组元素的区间删除 (20分)
3-2 数组元素的区间删除 (20分)
2020-10-17 | WEEK | 暂无评论 | 12 次阅读 | 240字

给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。

函数接口定义:
int Delete( int A[], int L, int minA, int maxA );
其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表长。

裁判测试程序样例:
#include <stdio.h>

#define MAXN 20

int Delete( int A[], int L, int minA, int maxA );

int main()
{
    int A[MAXN], L, minA, maxA, i;

    scanf("%d", &L);
    for (i=0; i<L; i++) scanf("%d", &A[i]);
    scanf("%d %d", &minA, &maxA);
    L = Delete(A, L, minA, maxA);
    for (i=0; i<L; i++) printf("%d ", A[i]);
    printf("\n");

    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例:
10
4 -8 2 12 1 5 9 3 3 10
0 4
输出样例:
4 -8 12 5 9 10 

作者
DS课程组
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB


int Delete( int A[], int L, int minA, int maxA ){
    int *p = A;
    int *index = A;
    //这个答案运行时间 14ms  opp!good
    while (index < A + L)
    {
        if (*index <= minA || *index >= maxA) {
            *p = *index;
            p++;
        }
        index++;
    }
   /* 这个代码耗时 27ms
   retVal = L;
    while (index < A + L)
    {
        if (*index > minA && *index < maxA) {
            retVal--;
        }else
        {
            *p = *index;
            p++;
        }
        index++;
    } */
    //下面这个方法耗时30ms,还能不能优化呢?
  /*   for (int i = 0;i < L ;i++ ){
        if (A[i] > minA && A[i] < maxA) {
            retVAl--;
        }else
        {
            *p = A[i];
            p++;
        }
    } */
    return p - A;
}

添加新评论
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif2016ka.gif2016bb.gif2016qiao.gif2016ll.gif2016shuai.gif2016zj.gif2016zk.gif

arrow_back 上一篇
arrow_forward 下一篇
没有了