/** * @author rale * Given an array and a value, remove all instances of that value in place and return the new length. * Do not allocate extra space for another array, you must do this in place with constant memory. * The order of elements can be changed. It doesn't matter what you leave beyond the new length. * Example: * Given input array nums = [3,2,2,3], val = 3 * Your function should return length = 2, with the first two elements of nums being 2. */ publicclassRemoveElement { publicintremoveElement(int[] nums, int val) { intindex=0; for(inti=0 ; i<nums.length ; i++){ if(nums[i] != val){ nums[index]=nums[i]; index++; } } return index; } }
/** * @author rale * Given an array and a value, remove all instances of that value in place and return the new length. * Do not allocate extra space for another array, you must do this in place with constant memory. * The order of elements can be changed. It doesn't matter what you leave beyond the new length. * Example: * Given input array nums = [3,2,2,3], val = 3 * Your function should return length = 2, with the first two elements of nums being 2. */ publicclassRemoveElement { publicintremoveElement(int[] nums, int val) { if(nums==null || nums.length==0){ return0; } intleftPointer=0; intrightPointer= nums.length-1; while(leftPointer<=rightPointer){ if(nums[rightPointer]==val){ rightPointer--; continue; } if(nums[leftPointer]==val){ nums[leftPointer] = nums[rightPointer]; rightPointer--; } leftPointer++; } return rightPointer+1; } }