Previously Asked Cognizant GenC Coding Questions – Set 3 (Beginner to Intermediate)
These coding questions are tailored for Cognizant GenC (Basic Track) preparation, mirroring the beginner to intermediate difficulty level seen in recent exams (2022-2024). Solutions are provided in C++ and Python with detailed explanations.
Question 1: Find Missing Number in Array
Given an array of n-1 integers in the range 1 to n with no duplicates, find the missing number.
Input: arr = [1, 2, 4, 6, 3, 7, 8], n = 8 Output: 5
Solution in C++
#includeusing namespace std; int findMissingNumber(vector & arr, int n) { int expectedSum = (n * (n + 1)) / 2; int actualSum = 0; for (int num : arr) actualSum += num; return expectedSum - actualSum; } int main() { vector arr = {1, 2, 4, 6, 3, 7, 8}; int n = 8; cout << findMissingNumber(arr, n) << endl; return 0; }
Solution in Python
def find_missing_number(arr, n): expected_sum = (n * (n + 1)) // 2 actual_sum = sum(arr) return expected_sum - actual_sum arr = [1, 2, 4, 6, 3, 7, 8] n = 8 print(find_missing_number(arr, n))
Explanation
Approach: Calculate the expected sum of numbers from 1 to n using the formula n*(n+1)/2. Subtract the actual sum of the array to find the missing number. Time Complexity: O(n), Space Complexity: O(1).
Relevance: Mathematical array problems are common in GenC to test logical reasoning.
Question 2: Swap Characters to Make Strings Equal
Given two strings of equal length, check if they can be made equal by swapping two characters in one string.
Input: s1 = "abcd", s2 = "adcb" Output: true (Swap 'b' and 'd' in s1)
Solution in C++
#includeusing namespace std; bool canBeEqual(string s1, string s2) { if (s1.size() != s2.size()) return false; vector diff; for (int i = 0; i < s1.size(); i++) { if (s1[i] != s2[i]) diff.push_back(i); if (diff.size() > 2) return false; } if (diff.size() == 0) return true; if (diff.size() != 2) return false; return s1[diff[0]] == s2[diff[1]] && s1[diff[1]] == s2[diff[0]]; } int main() { string s1 = "abcd", s2 = "adcb"; cout << (canBeEqual(s1, s2) ? "true" : "false") << endl; return 0; }
Solution in Python
def can_be_equal(s1, s2): if len(s1) != len(s2): return False diff = [] for i in range(len(s1)): if s1[i] != s2[i]: diff.append(i) if len(diff) > 2: return False if len(diff) == 0: return True if len(diff) != 2: return False return s1[diff[0]] == s2[diff[1]] and s1[diff[1]] == s2[diff[0]] s1, s2 = "abcd", "adcb" print(can_be_equal(s1, s2))
Explanation
Approach: Compare strings and collect positions of differences. If exactly two positions differ and swapping them aligns the strings, return true. Time Complexity: O(n), Space Complexity: O(1) or O(n) for diff array.
Relevance: String comparison with constraints is a typical GenC problem.
Question 3: Check Prime Number
Given an integer, check if it is a prime number (divisible only by 1 and itself).
Input: n = 17 Output: true
Solution in C++
#includeusing namespace std; bool isPrime(int n) { if (n <= 1) return false; if (n == 2) return true; if (n % 2 == 0) return false; for (int i = 3; i <= sqrt(n); i += 2) { if (n % i == 0) return false; } return true; } int main() { int n = 17; cout << (isPrime(n) ? "true" : "false") << endl; return 0; }
Solution in Python
def is_prime(n): if n <= 1: return False if n == 2: return True if n % 2 == 0: return False for i in range(3, int(n ** 0.5) + 1, 2): if n % i == 0: return False return True n = 17 print(is_prime(n))
Explanation
Approach: Check divisibility up to the square root of n, optimizing by skipping even numbers after 2. Time Complexity: O(√n), Space Complexity: O(1).
Relevance: Prime number checks are a frequent GenC question testing number theory basics.
Question 4: Merge Two Sorted Arrays
Given two sorted arrays, merge them into a single sorted array.
Input: arr1 = [1, 3, 5], arr2 = [2, 4, 6] Output: [1, 2, 3, 4, 5, 6]
Solution in C++
#includeusing namespace std; vector mergeArrays(vector & arr1, vector & arr2) { int n1 = arr1.size(), n2 = arr2.size(); vector result(n1 + n2); int i = 0, j = 0, k = 0; while (i < n1 && j < n2) { if (arr1[i] <= arr2[j]) result[k++] = arr1[i++]; else result[k++] = arr2[j++]; } while (i < n1) result[k++] = arr1[i++]; while (j < n2) result[k++] = arr2[j++]; return result; } int main() { vector arr1 = {1, 3, 5}, arr2 = {2, 4, 6}; vector merged = mergeArrays(arr1, arr2); for (int x : merged) cout << x << " "; cout << endl; return 0; }
Solution in Python
def merge_arrays(arr1, arr2): result = [] i = j = 0 while i < len(arr1) and j < len(arr2): if arr1[i] <= arr2[j]: result.append(arr1[i]) i += 1 else: result.append(arr2[j]) j += 1 result.extend(arr1[i:]) result.extend(arr2[j:]) return result arr1, arr2 = [1, 3, 5], [2, 4, 6] print(merge_arrays(arr1, arr2))
Explanation
Approach: Use two pointers to compare elements from both arrays, adding the smaller one to the result. Append remaining elements. Time Complexity: O(n1 + n2), Space Complexity: O(n1 + n2).
Relevance: Merging sorted arrays tests pointer techniques, a GenC staple.
Boost your Cognizant GenC prep with more coding challenges and expert tips! Stay ahead with our comprehensive resources.
Dive into More Placement Prep at JobsAddaaDiscover more from Jobs Addaa
Subscribe to get the latest posts sent to your email.