See More

import java.util.HashMap; import java.util.LinkedHashMap; public class RemoveElement { public static void main(String[] args) { RemoveElement e = new RemoveElement(); int[] A = {1,1,2,2,2,2,2,2,2,2}; int elem = 3; // System.out.println("SIZE: " + e.removeElement(A, elem)); System.out.println("SIZE: " + e.removeDup_CLO(A)); for(int i = 0; i < A.length; i++) System.out.print(A[i] + " "); System.out.println(); System.out.println("SIZE: " + e.removeElement_dup2(A)); for(int i = 0; i < A.length; i++) System.out.print(A[i] + " "); } class ListNode { public ListNode next; public int val; } private int removeDup_CLO(int[] A) { if(A.length < 3) return A.length; int count = 0; int idx=0; for(int i=1;i map = new LinkedHashMap(); for(int i = 0; i < A.length; i++) { if(map.containsKey(A[i])) { map.put(A[i], map.get(A[i]) + 1); } else map.put(A[i], 1); } int ind = 0; int end = 0; for(Integer i : map.keySet()) { if(map.get(i) >= 3) end = 2; else end = map.get(i); for(int j = 0; j < end; j++) { A[ind] = i; ind++; } } return ind; } public int removeElement(int[] A, int elem) { if(A.length == 1) { if(A[0] == elem) return 0; return 1; } int p1 = 0; int p2 = A.length - 1; int size = A.length; while(p1 <= p2) { //System.out.println(p1 + " " + p2); if(A[p2] == elem) { p2--; size--; } else if(A[p1] == elem) { int temp = A[p1]; A[p1] = A[p2]; A[p2] = temp; p1++; } else p1++; if(p1 == p2) { if(A[p1] == elem) size--; break; } } return size; } public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null && l2 == null) return null; if(l1 == null) return l2; if(l2 == null) return l1; ListNode newHead = null; ListNode last = null; boolean first = true; while(l1 != null && l2 != null) { if(l1.val < l2.val) { if(first) { newHead = l1; last = newHead; first = false; } else { last.next = l1; last = last.next; } l1 = l1.next; } else if(l2.val <= l1.val) { if(first) { newHead = l2; last = newHead; first = false; } else { last.next = l2; last = last.next; } l2 = l2.next; } } while(l1 != null) { last = l1; last = last.next; l1 = l1.next; } while(l2 != null) { last = l2; last = last.next; l2 = l2.next; } return newHead; } }