我被困在這個問題上。我的代碼通過了示例中給出的所有測試用例,但代碼中存在一些錯誤。請指出錯誤。Hackerearth刪除朋友:運行時錯誤 - NZEC
問題陳述(https://www.hackerearth.com/problem/algorithm/remove-friends-5)
讓她的博士學位後,克里斯蒂已經成爲她的大學名人,她的Facebook個人資料是完整的好友申請。作爲她的好女孩,克里斯蒂已經接受了所有的要求。
現在Kuldeep嫉妒她從其他人那裏得到的所有關注,所以他讓她從她的朋友名單中刪除一些人。 爲了避免「場景」,科視決定從朋友列表中刪除一些朋友,因爲她知道每個朋友的受歡迎程度,她使用以下算法刪除朋友。
算法刪除(朋友):
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編號。每個測試案例的第一行包含N,科視Christie目前擁有的朋友數量以及K,Christie決定刪除的朋友數量。下一行包含她的朋友的空間分隔的流行。
輸出: 對於每個測試用例,打印表示克里斯蒂朋友在刪除K朋友之後流行的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();
}}