This is a small code that if the length of input array is power of two then the size of segment array is 2*(input_array.length)-1 else 2*(next power of 2 after input_array.length)-1 .
public static int ByLogs(int n)
{
double y = Math.floor(Math.log(n)/Math.log(2));
return (int)Math.pow(2, y + 1);
}
public static void main(String [] args)
{
int input_array[] = {-1,2,4,0,3};
if(( input_array.length & (input_array.length - 1) == 0 ) && input_array.length > 0)
int [] segment_array = new int[2*(input_array.length)-1];
else
int [] segment_array = new int[2*(ByLogs(input_array.length))-1];
//Arrays.fill(segment_array,999);
System.out.println(segment_array.length);
}
but after compilation the following errors have been occurred.
SegmentTree.java:17: error: '.class' expected
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: not a statement
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: illegal start of expression
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: ';' expected
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: ']' expected
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: not a statement
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: illegal start of expression
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: ';' expected
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: not a statement
int [] segment_array = new int[2*(input_array.length)-1];
^
SegmentTree.java:17: error: ';' expected
int [] segment_array = new int[2*(input_array.length)-1];
I couldn't find out my mistake.