public ListNode deleteDuplicates(ListNode head) {

		if (head == null || head.next == null) {
			return head;
		}

		ListNode cur = head;
		while (cur != null) {
			ListNode nextNonDup = this.findNextNonDup(cur);
			// if(nextNonDup != null){
			// if (cur == head) {

			if (nextNonDup == null) {
				if (cur == head) {
					head = nextNonDup;
					return null;
				}
				else{
					ListNode prev = this.findPriorNode(head, cur);
					prev.next = nextNonDup;
					return head;
				}
			} else {
				if (nextNonDup != cur.next) {
					ListNode prior = this.findPriorNode(head, cur);
					if (prior != null) {
						prior.next = nextNonDup;
						cur = nextNonDup;
					} else {
						head = nextNonDup;
						return null;
					}

				}
			}

			cur = nextNonDup;

			// } else {
			// ListNode prior = this.findPriorNode(head, cur);
			// prior.next = nextNonDup;
			// cur = nextNonDup;
			// }

		}	

		return head;
	}