0% found this document useful (0 votes)
5 views

Coding_Test_Solution

The document provides answer keys for mock placement coding tests for the IT Department at Sardar Vallabhbhai Patel Institute of Technology, covering various algorithms in C, C++, Java, and Python. Key problems include calculating the maximum depth of a binary tree, the product of an array except for self, checking if a string is a valid palindrome, and removing the nth node from the end of a linked list. Each solution is accompanied by example inputs and outputs, along with constraints.

Uploaded by

aditimodi.s04
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Coding_Test_Solution

The document provides answer keys for mock placement coding tests for the IT Department at Sardar Vallabhbhai Patel Institute of Technology, covering various algorithms in C, C++, Java, and Python. Key problems include calculating the maximum depth of a binary tree, the product of an array except for self, checking if a string is a valid palindrome, and removing the nth node from the end of a linked list. Each solution is accompanied by example inputs and outputs, along with constraints.

Uploaded by

aditimodi.s04
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Sardar Vallabhbhai Patel Institute of Technology, Vasad

Training & Placement Cell, IT Department


Answer Key for Mock Placement
Sem-6 AY: 2024-25

Please Note: The solution for Coding Test is provided here in C, C++, Java, Python language.

CODING TEST
IT-1
(1) Maximum Depth of Binary Tree

Given the root of a binary tree, return its maximum depth.


A binary tree's maximum depth is the number of nodes along the longest path from the root node down
to the farthest leaf node.

Example 1:
Input: root = [3,9,20,null,null,15,7] Output:
3

Example 2:
Input: root = [1,null,2]
Output: 2

Constraints:
The number of nodes in the tree is in the range [0, 104].
-100 <= Node.val <= 100

Solution:

C:

// Function to calculate the maximum depth of the binary tree


int maxDepth(struct TreeNode* root) { if (root == NULL) { return
0;
}

int leftDepth = maxDepth(root->left); int


rightDepth = maxDepth(root->right);
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
C++:

// Function to calculate the maximum depth of the binary tree


int maxDepth(TreeNode* root) { if (root == NULL) { return 0;
}

int leftDepth = maxDepth(root->left); int


rightDepth = maxDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}

Java:

// Function to calculate the maximum depth of the binary tree


public static int maxDepth(TreeNode root) { if (root == null)
{ return 0; }

int leftDepth = maxDepth(root.left); int


rightDepth = maxDepth(root.right);
return Math.max(leftDepth, rightDepth) + 1; }

Python:

# Function to calculate the maximum depth of the binary tree


def maxDepth(root):
if not root:
return 0

leftDepth = maxDepth(root.left) rightDepth


= maxDepth(root.right)
return max(leftDepth, rightDepth) + 1

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
(2) Product of Array Except Self

Given an integer array nums, return an array answer such that answer[i] is equal to the product of all
the elements of nums except nums[i].
The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.
You must write an algorithm that runs in 0(n) time and without using the division operation.

Example 1:
Input: nums = [1,2,3,4]
Output: [24,12,8,6]

Example 2:
Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]

Constraints:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
The input is generated such that answer[i] is guaranteed to fit in a 32-bit

Solution:

C:
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {
int* result = (int*)malloc(numsSize * sizeof(int));
*returnSize = numsSize;

// Initialize result array with 1


for (int i = 0; i < numsSize; i++)
{ result[i] = 1; }

// Calculate prefix products int


prefix = 1; for (int i = 0; i <
numsSize; i++) { result[i] = prefix;
prefix *= nums[i]; }

// Calculate postfix products and multiply with prefix


int postfix = 1; for (int i = numsSize - 1; i >= 0; i-
-) { result[i] *= postfix; postfix *= nums[i];
}

return result;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
C++:

vector<int> productExceptSelf(vector<int>& nums) { int


n = nums.size();
vector<int> result(n, 1);
// Calculate prefix products
int prefix = 1; for (int i =
0; i < n; i++) { result[i] =
prefix; prefix *= nums[i];
}

// Calculate postfix products and multiply with


prefix int postfix = 1; for (int i = n - 1; i >= 0;
i--) { result[i] *= postfix; postfix *= nums[i]; }

return result;
}

Java:

// Initialize result array with 1


for (int i = 0; i < n; i++) {
result[i] = 1;
}

// Calculate prefix products


int prefix = 1; for (int i =
0; i < n; i++) { result[i] =
prefix; prefix *= nums[i];
}

// Calculate postfix products and multiply with prefix


int postfix = 1;
for (int i = n - 1; i >= 0; i--) {
result[i] *= postfix; postfix
*= nums[i];
}

return result;

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
Python:

def productExceptSelf(nums): def productExceptSelf(nums):


n = len(nums) result
= [1] * n

# Calculate prefix products


prefix = 1 for i in
range(n): result[i] =
prefix prefix *= nums[i]

# Calculate postfix products and multiply with prefix


postfix = 1 for i in range(n - 1, -1, -1):
result[i] *= postfix
postfix *= nums[i]
return result

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
IT-2,3

(1) Valid Palindrome

A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all
non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters
include letters and numbers.
Given a string s, return true if it is a palindrome, or false otherwise.

Example 1:
Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.

Example 2:
Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.

Constraints:
1 <= s.length <= 2 * 105 s consists only of printable
ASCII characters.

Solution:

C:

boolean isPalindrome(char* s)
{ int left = 0;
int right = strlen(s) - 1;

while (left < right) { while (left < right &&


!isalnum(s[left])) { left++;
}
while (left < right && !isalnum(s[right])) {
right--;
} if (tolower(s[left]) != tolower(s[right]))
{ return false;
}
left++;
right--;
}

return true;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
C++:

boolean isPalindrome(string s) { int


left = 0;
int right = s.length() - 1;

while (left < right) { while (left < right &&


!isalnum(s[left])) { left++;
} while (left < right &&
!isalnum(s[right])) { right--;
}
if (tolower(s[left]) != tolower(s[right])) {
return false;
}
left++;
right--;
} return
true;
}

Java:

public static boolean isPalindrome(String s) { int


left = 0;
int right = s.length() - 1;

while (left < right) { while (left < right &&


!Character.isLetterOrDigit(s.charAt(left))) { left++;
}
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
right--;
}
if (Character.toLowerCase(s.charAt(left)) !=
Character.toLowerCase(s.charAt(right))) { return
false;
}
left++;
right--;
}

return true;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
Python:

def isPalindrome(s): left


= 0
right = len(s) – 1

while left < right:


while left < right and not s[left].isalnum():
left += 1
while left < right and not s[right].isalnum():
right -= 1
if s[left].lower() != s[right].lower():
return False
left += 1
right -= 1

return True

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
(2). Remove Nth Node From End of List

Given the head of a linked list, remove the nth node from the end of the list and return its head.

Example 1:
Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:
Input: head = [1], n = 1
Output: []

Constraints:
The number of nodes in the list is sz.
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz Solution:

C:

struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {


struct ListNode dummy = {0, head}; struct ListNode *res =
&dummy; struct ListNode *fast = head;

// Move fast pointer n steps ahead for (int i = 0; i < n; i++) {


if (fast == NULL) return head; // Edge case: n > list length fast
= fast->next;
}

// Move both pointers until fast reaches the end


while (fast != NULL) { fast = fast->next; res =
res->next;
}

// Remove the nth node from the end res->next


= res->next->next;

return dummy.next;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
C++:

ListNode* removeNthFromEnd(ListNode* head, int n){


ListNode dummy(0, head);
ListNode *res = &dummy;
ListNode *fast = head;

// Move fast pointer n steps ahead


for (int i = 0; i < n; i++) { fast
= fast->next;
}

// Move both pointers until fast reaches the end


while (fast != nullptr) { fast = fast->next; res
= res->next;
}

// Remove the nth node from the end res->next


= res->next->next;

return dummy.next;
}

Java:

public static ListNode removeNthFromEnd(ListNode head, int n) {


ListNode res = new ListNode(0,
head); ListNode dummy = res; for
(int i = 0; i < n; i++) { head =
head.next;
} while (head != null)
{ head = head.next;
dummy = dummy.next;
}
dummy.next = dummy.next.next; return
res.next;
}

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025
Python:

# Function to remove the nth node from the end def


removeNthFromEnd(head, n):
dummy = ListNode(0, head) res
= dummy fast = head

# Move fast pointer n steps ahead


Preparedfor Kashish_ in Zaveri,range Samarth(n):

fast = fast.next

# Move both pointers until fast reaches the end


while fast:
fast = fast.next res
= res.next

# Remove the nth node from the end res.next


= res.next.next

return dummy.next

Prepared by Kashish Zaveri, Samarth Joshi, Tarun Ray, Unnati Suryawanshi (T&P Coordinators) 21/03/2025

You might also like