• PTA数据结构与算法题目集(中文) 7-19


    PTA数据结构与算法题目集(中文)  7-19

    7-19 求链式线性表的倒数第K项 (20 分)
     

    给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

    输入格式:

    输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

    输出格式:

    输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL

    输入样例:

    4 1 2 3 4 5 6 7 8 9 0 -1
    

    输出样例:

    7
    题目分析:看到高效就想用数组来 因为数组按秩查找是相当快的 后面搜了一下别人的做法 更好
     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<malloc.h>
     4 
     5 int Size;
     6 int main()
     7 {
     8     int k;
     9     int*Array = (int*)malloc(sizeof(int) * 1000000);
    10     scanf("%d", &k);
    11     while (1)
    12     {
    13         int num;
    14         scanf("%d", &num);
    15         if (num == -1)
    16             break;
    17         Array[Size++] = num;
    18     }
    19     k = Size - k;
    20     if (k <0||k>=Size)
    21         printf("NULL");
    22     else
    23         printf("%d", Array[k]);
    24     free(Array);
    25     return 0;
    26 }
    View Code

    别人的做法

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<malloc.h>
     4 
     5 
     6 int main()
     7 {
     8     int k=0;
     9     int Size=0;
    10     scanf("%d", &k);
    11     if (k <=0)
    12     {
    13         printf("NULL");
    14         return 0;
    15     }
    16     int*Array = (int*)malloc(sizeof(int) * k); //只需存k个数
    17     int Flag = 0;
    18     while (1)
    19     {
    20         int num;
    21         scanf("%d", &num);
    22         if (num == -1)   //当输入为-1时退出
    23             break;
    24         Array[Size++] = num;
    25         if (!Flag && Size >= k)
    26             Flag = 1;
    27         Size%=k;
    28     }
    29     if (!Flag)
    30         printf("NULL");
    31     else
    32         printf("%d", Array[Size]);
    33     free(Array);
    34     return 0;
    35 }
    View Code
  • 相关阅读:
    从网易与淘宝的font-size思考前端设计稿与工作流
    不吹不黑也不撕,我们就简简单单谈谈Vue
    CSS中各种布局的背后(*FC)
    JavaScript七宗罪和一些槽点
    设计糟糕的 RESTful API 就是在浪费时间!
    JavaScript专题之事件循环
    JavaScript知识点
    掌握git基本功
    延迟情况测试点
    Fiddler监听Https请求响应
  • 原文地址:https://www.cnblogs.com/57one/p/11626881.html
Copyright © 2020-2023  润新知