importjava.util.*;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);// 判断接下来是否还有输入while(sc.hasNext()){int n1 = sc.nextInt();// 读一个数字Long n2 = sc.nextLong();// Long 型
sc.nextLine();// 读取掉换行符String s = sc.nextLine();// 读整行,包括回车符int m =Integer.valueOf(sc.nextLine());// 将本行读取的String 转换为数字String[] ss = sc.nextLine().split(" ");// 将本行读取的String 根据空格分割成 String 数组}System.out.println();}}
构建数据结构
数组
输入 [1,2,3,4]
importjava.util.*;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);String imput = sc.nextLine();String[] parts = s.replace("[").replace("]").split(",");int[] ans =newint[parts.length];for(int i =0; i < parts.length; i++){
ans[i]=Integer.valueOf(parts[i]);}// System.out.println(Arrays.toString(ans));}}
链表
输入 [1,2,3,4]
importjava.util.*;publicclassMain{staticclassListNode{int val;ListNode next;ListNode(int val){this.val = val;}}publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);String str = sc.nextLine();String[] arr = str.replace("[").replace("]").split(",");ListNode head =StringToListNode(arr);printListNode(head);}privatestaticListNodeStringToListNode(String[] arr){// 尾插法创建链表ListNode dummyHead =newListNode(-1);ListNode cur = dummyHead;for(int i =0; i < arr.length; i++){
cur.next =newListNode(Integer.valueOf(arr[i]));
cur = cur.next;}return dummyHead.next;}privatestaticvoidprintListNode(ListNode head){ListNode cur = head;while(cur !=null){System.out.print(cur.val +" ");
cur = cur.next;}}}
二叉树
输入 [10,5,-3,3,2,null,11,3,-2,null,1]
层序输入
数组预处理方式创建二叉树
importjava.util.*;publicclassMain{staticclassTreeNode{int val;TreeNode left;TreeNode right;TreeNode(int val){this.val = val;}}publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);String input = sc.nextLine();TreeNode root =stringToTreeNode(input);printTree(root);}publicstaticTreeNodestringToTreeNode(String input){String[] arr = input.replace("[","").replace("]",""),replace(" ","").split(",");TreeNode root =null;// 将输入的数组转换为二叉树数组,如果有 null ,就在数组中存 nullList<TreeNode> list =newArrayList<>();for(int i =0; i < arr.length; i++){TreeNode node =null;if("null".equals(arr[i])){
list.add(node);}else{
node =newTreeNode(Integer.valueOf(arr[i]));
list.add(node);}if(i ==0) root = node;// 根节点}// 构造二叉树for(int i =0;2* i +2< arr.length; i++){TreeNode node = list.get(i);if(node !=null){
node.left = list.get(2* i +1);
node.right = list.get(2* i +2);}}return root;}publicstaticvoidprintListNode(TreeNode root){if(root ==null)return;ArrayList<ArrayList<Integer>> ans =newArrayList<>();LinkedList<TreeNode> que =newLinkedList<>();
que.offer(root);while(!que.isEmpty()){ArrayList<Integer> list =newArrayList<>();int size = que.size();for(int i =0; i < size; i++){TreeNode node= que.poll();
list.add(node.val);if(node.left !=null){
que.offer(node.left);}if(node.right !=null){
que.offer(node.right);}}
ans.add(list);}for(int i =0; i < ans.size(); i++){for(int j =0; j < ans.get(i).size(); j++){System.out.print(ans.get(i).get(j)+" ");}}}}