ProblemGiven an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.Find all the elements that appear twice in this array.Could you do it without extra space and in O(n) runtime?Example:Input:[4,3,2,7,8,2,3,1]Output:[2,3]Solutionclass Solution { public List<Integer> findDuplicates(int[] nums) { //use index to record visited: times -1 List<Integer> res = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { int index = nums[i] > 0 ? nums[i]-1 : -nums[i]-1; if (nums[index] < 0) res.add(index+1); nums[index] *= -1; } return res; }}