/**
*
*/
package me.abel.algorithm;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
/**
* @author abel
*
*/
public class DistinguishDigit {
public static void main(String... args){
int[] arr = {1,2,3,5,7,9,10,11,21,35,36};
distinguish(arr);
distinct(arr);
}
public static void distinct(int[] arr) {
List<Stack<Integer>> stackList = new ArrayList<Stack<Integer>>();
Stack<Integer> stack = new Stack<Integer>();
stackList.add(stack);
for(int val : arr){
if(stack.isEmpty()){
stack.push(val);
} else {
if((val - 1) != stackList.get(stackList.size() - 1).peek() ){
stack = new Stack<Integer>();
stack.push(val);
stackList.add(stack);
} else {
stackList.get(stackList.size() - 1).push(val);
}
}
}
System.out.println(Arrays.toString(stackList.toArray()));
}
public static void distinguish(int[] arr) {
List<List<Integer>> sections = new ArrayList<List<Integer>>();
ArrayList<Integer> arrList = new ArrayList<Integer>();
sections.add(arrList);
for(int i = 0; i < arr.length ; i ++){
if(!((arr[i+1] - arr[i]) == 1)){
sections.get(sections.size() - 1).add(arr[i]);
arrList = new ArrayList<Integer>();
sections.add(arrList);
if(i + 1 == arr.length - 1 ){
arrList.add(arr[i+1]);
break;
}
} else {
arrList.add(arr[i]);
if(i + 1 == arr.length - 1){
arrList.add(arr[i + 1]);
break;
}
}
}
System.out.println(Arrays.toString(sections.toArray()));
}
}
*
*/
package me.abel.algorithm;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
/**
* @author abel
*
*/
public class DistinguishDigit {
public static void main(String... args){
int[] arr = {1,2,3,5,7,9,10,11,21,35,36};
distinguish(arr);
distinct(arr);
}
public static void distinct(int[] arr) {
List<Stack<Integer>> stackList = new ArrayList<Stack<Integer>>();
Stack<Integer> stack = new Stack<Integer>();
stackList.add(stack);
for(int val : arr){
if(stack.isEmpty()){
stack.push(val);
} else {
if((val - 1) != stackList.get(stackList.size() - 1).peek() ){
stack = new Stack<Integer>();
stack.push(val);
stackList.add(stack);
} else {
stackList.get(stackList.size() - 1).push(val);
}
}
}
System.out.println(Arrays.toString(stackList.toArray()));
}
public static void distinguish(int[] arr) {
List<List<Integer>> sections = new ArrayList<List<Integer>>();
ArrayList<Integer> arrList = new ArrayList<Integer>();
sections.add(arrList);
for(int i = 0; i < arr.length ; i ++){
if(!((arr[i+1] - arr[i]) == 1)){
sections.get(sections.size() - 1).add(arr[i]);
arrList = new ArrayList<Integer>();
sections.add(arrList);
if(i + 1 == arr.length - 1 ){
arrList.add(arr[i+1]);
break;
}
} else {
arrList.add(arr[i]);
if(i + 1 == arr.length - 1){
arrList.add(arr[i + 1]);
break;
}
}
}
System.out.println(Arrays.toString(sections.toArray()));
}
}