win10建设网站目录百度应用下载安装
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5 输出: 1->2->5
示例 2:
输入: 1->1->1->2->3 输出: 2->3
/*** Definition for a singly-linked list.* class ListNode {* public $val = 0;* public $next = null;* function __construct($val) { $this->val = $val; }* }*/
class Solution {/*** @param ListNode $head* @return ListNode*/function deleteDuplicates($head) {$node_map = [];$p = $head;$front = null;$first_val = 0;while($p) {if($p==$head) {$first_val = $p->val;}if(isset($node_map[$p->val])) {$node_map[$p->val]++;$front->next = $p->next;$p = $front->next;} else {$front = $p;$node_map[$p->val] = 1;$p = $p->next;}}if($head==null) {return null;}$p = $head;$front = null;while($p) {if($front!=null && $node_map[$p->val]>1) {$front->next = $p->next;$p = $front->next;} else {$front = $p;$p = $p->next;}}if($head==null) {return null;} else {if($node_map[$head->val]>1) {return $head->next;} else {return $head;}}}
}