• 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ


    题目描述:

    输入一个链表,输出该链表中倒数第k个结点。
    (hint: 请务必使用链表。)

    输入:

    输入可能包含多个测试样例,输入以EOF结束。
    对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
    输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。

    输出:

    对应每个测试案例,
    若有结果,输出相应的查找结果。否则,输出NULL。

    样例输入:

    5 2
    1 2 3 4 5
    1 0
    5
    样例输出:

    4
    NULL

    【解题思路】本题虽然提示要用链表来处理,但只要思路一致,链表也没什么,只不过数据结构稍微复杂一点,但由于我的思路完全体现不出需要用链表的必要性,所以还是什么数据结构都不采用的简洁思想。

        先指定第倒数k个元素为k=n-k,不存在则k=-1。然后顺次输入值,若输入到第n-k个元素则记录下该元素,不存在该元素则输出NULL。

    AC code:

    #include <cstdio>
    using namespace std;
     
    int main()
    {
      int n,k;
      while(scanf("%d%d",&n,&k)!=EOF)
      {
        k=n-k<0?-1:n-k;
        int rc=-1,tt;
        for(int i=0;i<n;++i)
        {
          scanf("%d",&tt);
          if(i==k && k!=-1 && k!=n)
            rc=tt;
        }
        if(rc!=-1)
          printf("%d
    ",rc);
        else
          printf("NULL
    ");
      }
      return 0;
    }
    /**************************************************************
        Problem: 1517
        User: huo_yao
        Language: C++
        Result: Accepted
        Time:90 ms
        Memory:1020 kb
    ****************************************************************/
    
    题目链接:http://ac.jobdu.com/problem.php?pid=1515

    九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299

  • 相关阅读:
    Redis 分布式锁
    Angular VS Blzaor
    Chorme 跨域的快捷解决
    旋转3角形
    .Netcore AD 操作
    .Netcore 2.2 和3.1 的模板
    Command3
    CSS Selector
    弹性盒子
    Label_strange_labels
  • 原文地址:https://www.cnblogs.com/huoyao/p/4248906.html
Copyright © 2020-2023  润新知