尋找關鍵點

2021-10-10 22:09:24 字數 1392 閱讀 4341

現定義關鍵點為一條鏈中處於中間位置的節點,例如 1 3 4中,3就是這個整數鏈中的關鍵點。

現在小玉得到了乙個整數鏈,確保鏈中的各個數都互不相同且數列中數的個數為奇數。

可是,由於小玉的一些特殊要求,她可能會對這個鏈進行一些特別的操作。

由於小玉特殊的要求,她保證鏈中肯定會有值為1和2的節點,並且這兩個節點永遠不會被刪除。保證在插入操作之後鏈中始終不會有重複值的節點。

現在請你寫出乙個程式,幫助小玉找出鏈中的關鍵點。

只有一組資料

先輸入乙個整數n(10<=n<=100000),且保證n一定為奇數

接下來輸入n個互不相同的整數num(1<=num<=10000000)

接著下一行輸入乙個整數m(1<=m<=4000)

代表接下來有m行

每行有3個數aa,bb,cc. 其中第乙個數aa表示操作型別,aa為1代表刪除鏈中值為bb和cc的數,

aa為2代表在鏈中值為1的節點後增加值為bb的節點,在鏈中值為2的節點後增加值為cc的節點。

(保證刪除的節點在鏈中一定有,保證插入的節點與鏈中已有節點不會重複)

對於每次操作,輸出乙個值h,代表操作完成後鏈中的關鍵點。

input 

5

1 3 4 5 2

21 3 4

2 3 4

output 

5

5

#include #includeusing namespace std;

typedef struct node

node;

node *create(node *&head, int n)

return head;

}int f1(node *head, int &n, int a, int b)

p = p -> next;

}node *q = head;

while(q != null && q -> next != null)

q = q -> next;

}return n;

}int f2(node *head, int &n, int a, int b)

p = p -> next;

}node *q = head -> next;

while(q != null)

q = q -> next;

}return n;

}void print(node *head, int n)

p = p -> next;

}printf("%d\n", p -> data);

}int main()

else if(num == 2)

print(l, len);

}return 0;

}

尋找關鍵點

尋找關鍵點 problem description 現定義關鍵點為一條鏈中處於中間位置的節點,例如 1 3 4中,3就是這個整數鏈中的關鍵點。現在小玉得到了乙個整數鏈,確保鏈中的各個數都互不相同且數列中數的個數為奇數。可是,由於小玉的一些特殊要求,她可能會對這個鏈進行一些特別的操作。操作 1 給定兩...

sdut oj 4205 尋找關鍵點

description 現定義關鍵點為一條鏈中處於中間位置的節點,例如 1 3 4中,3就是這個整數鏈中的關鍵點。現在小玉得到了乙個整數鏈,確保鏈中的各個數都互不相同且數列中數的個數為奇數。可是,由於小玉的一些特殊要求,她可能會對這個鏈進行一些特別的操作。操作 1 給定兩個數a和b,每次刪除鏈中值為...

尋找最近點對

一維的數很簡單,先排序,再掃瞄已排好的數,相鄰兩個進行比較即可,時間複雜度為o n log2n n o n log2n 兩維的話 把平面上n個點分成兩部分left和right。假設分別求出left和right兩部分最短距離mindistleft和mindistright,還有一種情況就是點對中乙個點...