import java.util.*; public class Main { private static List> transform(int[] nums) { List> ans = new ArrayList>(); Set set = new HashSet<>(); int rowCount = 0; if(nums.length > 0) { ans.add(new ArrayList()); ans.get(rowCount).add(nums[0]); set.add(nums[0]); } else return ans; for(int i = 1; i < nums.length; i++) { if(set.contains(nums[i])) { ans.add(new ArrayList()); for(int k = 0; k < ans.size(); k++) { List row = ans.get(i); boolean found = false; for(int j = 0 ; j < row.size(); j++) { if(row.get(j) == nums[i]) found = true; }` if() } rowCount++; ans.get(rowCount).add(nums[i]); set.clear(); set.add(nums[i]); } else { ans.get(rowCount).add(nums[i]); set.add(nums[i]); } } return ans; } public static void main(String[] args) { System.out.println("Hello World"); int[] input = new int[] {1,1,1,2,2,2}; List> ans = transform(input); for(int i = 0; i < ans.size(); i++) { for(int j = 0; j < ans.get(i).size(); j++) { System.out.println(ans.get(i).get(j) + " "); } System.out.print("\n"); } } } /* numArray = [1,2,2,1] 1 -> 2 2 -> 2 maxCnt = 2; ans = int[2][] for(key, value) in map { for(int j = 0; j < value; j++) ans.get(j).add(key); } [1,2,3,4,1,2,3,4] List> transform (int[] nums) Set m ; List> ans; int rowCnt = 0; if(nums.length > 0) ans.add(new ArrayLis(){nums[0}) m.put(nums[0]) else return ans; for(1 to nums.length) if(map.contains(nums[i])) { ans.add(new ArrayLis(){nums[i]}) rowCnt++; m.clear(); m.put(nums[i]); } else { ans.get(rowCnt).add(nums[i]); m.put(nums[i]); } return ans; m = {1, 2,3, 4} ans = 0 -> {1, 2, 3, 4} , 1 -> {1, 2, 3, ,4} */