私はこの問題に固執しています。私のコードは、この例で示したすべてのテストケースを渡しますが、コードには何らかのエラーがあります。エラーを親切に指摘してください。Hackerearthは友達を削除します:ランタイムエラー - NZEC
問題文(https://www.hackerearth.com/problem/algorithm/remove-friends-5)
彼女の博士号を取得した後、クリスティは、彼女の大学で有名人になってきている、と彼女のFacebookのプロフィールには、友達リクエストがいっぱいです。彼女は素敵な女の子なので、クリスティはすべての要求を受け入れました。
今、Kuldeepは彼女が他の人から得ているすべての注意を嫉妬しているので、友人のリストから少年を削除するように彼女に求めます。 「シーン」を避けるために、Christieは友人のリストからいくつかの友人を削除することに決めました。彼女はそれぞれの友人の人気を知っているので、次のアルゴリズムを使って友人を削除します。
アルゴリズム削除(友人):
DeleteFriend=false
for i = 1 to Friend.length-1
if (Friend[i].popularity < Friend[i+1].popularity)
delete i th friend
DeleteFriend=true
break
if(DeleteFriend == false)
delete the last friend
入力: 最初の行は、テストケースのT番号を含みます。各テストケースの最初の行には、Christieが現在持っている友人の人数Nと、Christieが削除を決定した友人の人数Kが含まれています。次の行には、スペースで区切られた友人の人気が含まれています。
出力: 各テストケースでは、Kの友人を削除した後のChristie friendの人気を表すN-K番号を印刷します。
注記 正確にK人の友人を削除した後の友人の注文は、入力したとおりに維持する必要があります。
マイソリューション
class TestClass {
static class Node
{
int data;
Node next;
Node(int d)
{
data = d;
next = null;
}}
static Node head = null;
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int cases = Integer.parseInt(line);
for (int i = 0; i < cases; i++) {
line = br.readLine();
int friends = Integer.parseInt(line);
line = br.readLine();
int delete = Integer.parseInt(line);
head = null;
Node p =null;
for(int j=0;j < friends;j++){
line = br.readLine();
int temp = Integer.parseInt(line);
if(head == null){
head = new Node(temp);
p = head;
}
else{
Node q = new Node(temp);
p.next = q;
p = q;
}}
delete_friend(head , delete);
print_list(head);
}}
static void delete_friend(Node h, int delete){
Node p = head;
Node q = null;
int flag = 0;
for (int x = 1; x<=delete;x++){
p = head;
flag = 0;
q = p.next;
while(p.next != null){
q = p.next;
if(p.data < q.data){
p.data = q.data;
p.next = q.next;
flag=1;
p = head;
break;
}
if (flag == 0 && q.next == null){
if (p.data >= q.data) {
p.next = null;
break;
}}
p = p.next;
}}}
static void print_list(Node head){
Node tnode = head;
while (tnode != null)
{
System.out.print(tnode.data+" ");
tnode = tnode.next;
}
System.out.println();
}}