PTAタイトルセットのデータ構造とアルゴリズム(中国)7-19
最後から二番目の用語Kを求めて表7-19直鎖(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型のサイズ; 6 INT )(メイン 7 { 8 int型K。 9 INT *アレイ=(INT *)はmalloc(はsizeof(INT)* 1000000 )。 10 のscanf(" %dの"、&K)。 11 一方、(1 ) 12 { 13 int型NUM; 14 のscanf(" %dの"、およびNUM)。 15 であれば(NUM == - 1 ) 16 ブレーク。 17 アレイ【サイズ++] = NUM。 18 } 19 K =サイズ- kは。 20 もし(K < 0 || K> = サイズ) 21 のprintf(" NULL " )。 22 他の 23 のprintf(" %dの" 、配列[K])。 24 フリー(アレイ)。 25 リターン 0 ; 26 }
他の人がやっています
1つ の#define _CRT_SECURE_NO_WARNINGS 2の#include <stdio.hの> 3の#include < malloc関数 .H> 4 5 6 INT メイン() 7 { 8 int型 K = 0 。 9 int型のサイズ= 0 ; 10 のscanf(" %dの"、&K)。 11 もし(K <= 0 ) 12 { 13 のprintf(" NULL " )。 14 リターン 0 ; 15 } 16 INT *アレイは=(INT *)はmalloc(はsizeof(INT)* K); // 専用メモリ数Kを 17 INTフラグ=で0 ; 18である 一方、(1 ) 19 { 20は、 INT NUM; 21は、 scanfの(" Dの%」、&NUM); 22である 場合(NUM == - 1) // 出-1入力場合 23がある BREAK ; 24 アレイ【サイズ++] = NUM。 25 であれば(フラグ&&サイズ> =!K) 26 フラグ= 1 。 27 サイズ(%)= K。 28 } 29 もし(!フラッグ) 30 のprintf(" NULL " ); 31 他の 32 のprintf(" %dの" 、配列[サイズ])。 33 フリー(アレイ)。 34 リターン 0 。 35 }