Hackerrank
Buying show ticket
Given an array, tickets, of n positive integers describing initial sequence of people standing in line. Each ticketsi describes number of tickets that a person waiting at initial place. An integer p, denoting Jesse's position in tickets. Return the waiting time
Divide array by index p.
In first half, count the number only it is greater than ticket[i], otherwise return p
In second half the same, but return number - 1
private int buy(int[] tickets, int p){
int count=tickets[p];
for(int i=0; i<p; i++){
if(tickets[i]>p) count+=tickets[p];
else count+=tickets[i];
}
for(int i=p+1; i<tickets.length;i++){
if(tickets[i]>p) count+=tickets[p]-1;
else count+=tickets[i]-1;
}
return count;
}
public static void main(String[] args) {
buyTickets b1 = new buyTickets();
int[] tickets1 = new int[]{2,6,3,4,5};
System.out.println(b1.buy(tickets1, 2)); // return 12
int[] tickets2 = new int[]{5,5,2,3,3};
System.out.println(b1.buy(tickets2, 2)); // return 8
}
Last updated
Was this helpful?