Juspay Interview Question for Software Developers


Country: India




Comment hidden because of low score. Click to expand.
1
of 1 vote

I think this code will fail when you stuck in an infinite cycle.
Let the path 1-> 2-> 3-> 4-> 1
Then, you will be stuck in your first while loop.

i may suggest a code in python:

def find_meet(edges_list, a,b,n):
visited = [0]*n
d = {}
visited[a] = 1
if visited[b] == 1:
return a
visited[b] = 1
t = edges_list[a]
while t!= -1 and visited[t] == 0:
visited[t] = 1
t = edges_list[t]
t = edges_list[b]
# print(visited)
while t!= -1 and visited[t] == 0:
visited[t] = 1
t = edges_list[t]
# print(visited)
if t == -1:
return -1
return t


t = int(input())
for _ in range(t):
n = int(input())
edges_list = list(map(int,input().split()))
a,b = map(int,input().split())
# print([i for i in range(n)])
# print(edges_list)
print(find_meet(edges_list, a, b, n))

################# SIddhesh dosi #######################

- maniacLooper December 18, 2020 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

I am not sure how can we do it in O(Log(n)), but with O(n) it should be easy.

1) Keep a map where you store the cells which can be reached by C1.
2) Traverse through the path of C1, keep on storing the path in the map. {c1: 1, c1->exit: i, c1->exit->exit: 1 ....}
3) Do the same traversal for c2, at any time if you find the exit path exist in the above map then that is the meeting point of 2 cells.

In Javascript:

var path               = {},
      meetingPoint = null;
while(c1.exit) {
	var cell = c1.exit;
	path[cell] = 1;
}
while(c2.exit) {
	if (path[c2.exit] === 1) {
		meetingPoint = c2.exit;
	}
}

return meetingPoint;

- Piyush Beli September 24, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Can u tell me the sol of this in c

- Arun May 16, 2020 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Python code irukkah thala?

- Anonymous May 28, 2020 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

?

- maniacLooper December 18, 2020 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

var path = {},
meetingPoint = null;
while(c1.exit) {
var cell = c1.exit;
path[cell] = 1;
}
while(c2.exit) {
if (path[c2.exit] === 1) {
meetingPoint = c2.exit;
}
}

return meetingPoint;

- Anonymous May 07, 2021 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

1
23

- Anonymous March 15, 2022 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

madarchod ke baccho answer toh sahi bata do

- tmkc May 07, 2022 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

static int solution(int[] array) {
int n = array.length;
int count[] = new int[n];
Arrays.fill(count, 0);
for(int i = 0; i < n; i++) {
if(array[i] != -1)
count[array[i]] += i;
}
int maxWeight = 0;
int nodeNumber = 0;
for(int i = 0; i < n; i++) {
if(count[i] > maxWeight) {
maxWeight = count[i];
nodeNumber = i;
}
}
return nodeNumber;
}

- Anonymous December 01, 2022 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

You are given a maze with N cells. Each cell may have multiple entry points but not more than one exit (ie. entry/exit points are unidirectional doors like valves).

The cells are named with an integer value from 0 to N-1.

You have to find:

The sum of the largest sum cycle in the maze. Return -1 if there are no cycles.

1. Sum of a cycle is the sum of the node number of all nodes in that cycle.

INPUT FORMAT:

1. The first line has the number of cells N.

2. The second line has a list of N values of the edge[] array. edge[i] contains the cell number that can be reached from of cell 'i' in one step. edge[i] is -1 if the 'i'th cell doesn't have an exit.

OUTPUT FORMAT:

The first line denotes the sum of the largest sum cycle.

Sample Input and Output

Input:

1

23

441413888 0 8 14 9

15 11-1 10 15 22

22 22 22

22 21

Output:

45

- Anonymous February 28, 2024 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

You are given a maze with N cells. Each cell may have multiple entry points but not more than one exit (ie. entry/exit points are unidirectional doors like valves).

The cells are named with an integer value from 0 to N-1.

You have to find:

The sum of the largest sum cycle in the maze. Return -1 if there are no cycles.

1. Sum of a cycle is the sum of the node number of all nodes in that cycle.

INPUT FORMAT:

1. The first line has the number of cells N.

2. The second line has a list of N values of the edge[] array. edge[i] contains the cell number that can be reached from of cell 'i' in one step. edge[i] is -1 if the 'i'th cell doesn't have an exit.

OUTPUT FORMAT:

The first line denotes the sum of the largest sum cycle.

Sample Input and Output

Input:

1

23

441413888 0 8 14 9

15 11-1 10 15 22

22 22 22

22 21

Output:

45

- Anonymous February 28, 2024 | Flag Reply
Comment hidden because of low score. Click to expand.
-1
of 1 vote

var path = {},
meetingPoint = null;
while(c1.exit) {
var cell = c1.exit;
path[cell] = 1;
}
while(c2.exit) {
if (path[c2.exit] === 1) {
meetingPoint = c2.exit;
}
}

return meetingPoint;

- Anonymous May 16, 2020 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

your code will fall in an infinite loop

- maniacLooper December 18, 2020 | Flag
Comment hidden because of low score. Click to expand.
-1
of 1 vote

# Anwer to this question in Python:

def meet(edges,c):
        
    startCell = c[0]
    c1_cells=[]
    cell = startCell
    while cell > -1 and cell not in c1_cells:
        c1_cells.append(cell)
        cell = edges[cell]
            
    startCell = c[1]
    c2_cells=[]
    cell = startCell
    while cell > -1 and cell not in c2_cells:
        c2_cells.append(cell)
        cell = edges[cell]
        
    min_dist = 99999
    ans = -1
     
    for j in c1_cells:
        if j in c2_cells:
            dist = max(c1_cells.index(j) , c2_cells.index(j))
            if dist < min_dist:
                min_dist = dist
                ans = j
    return ans

size = int(input())
edges = list(map(int,input().strip().split()))
c = list(map(int,(input().split())))

print(meet(edges,c))

- shardulshinde2812 November 29, 2021 | Flag Reply
Comment hidden because of low score. Click to expand.
-2
of 2 vote

Address bta ghar ka madarchod

- Yuvraj February 22, 2021 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

Kya krega jaan k ....

- maniaclooper October 05, 2021 | Flag
Comment hidden because of low score. Click to expand.
-2
of 2 vote

Address bta madarchod

- Yuvraj February 22, 2021 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

Chup bhsdk

- FatherSahab June 19, 2021 | Flag


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More