示例1
输入:
{1,2,3,3,4,4,5}
返回值:
{1,2,5}
示例2
输入:
{1,1,1,8}
返回值:
{8}
解题思路
开辟一个数组,记录每一个节点的val出现的频次,最后挑出只出现一次的val。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @return ListNode类
*/
struct ListNode* deleteDuplication(struct ListNode* pHead ) {
// write code here
int arr[1001] = {0};
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode*));
head->next = NULL;
head->val = 0;
struct ListNode* p = pHead;
while (p) {
arr[p->val]++;
p = p->next;
}
struct ListNode* res = head;
for (int i = 1; i < 1001; i++) {
if (arr[i] == 1) {
struct ListNode* new_node = (struct ListNode*)malloc(sizeof(struct ListNode*));
new_node->val = i;
new_node->next = NULL;
head->next = new_node;
head = head->next;
}
}
return res->next;
}