Previously asked Cognizant GenC Elevate Coding Questions – Set 2 (Intermediate)
These coding questions are crafted for Cognizant GenC Elevate preparation, reflecting the intermediate difficulty level observed in recent exams (2022-2024). Solutions are provided in C++ and Python with detailed explanations.
Question 1: Fibonacci Number (Recursive with Memoization)
Given a number n, find the nth Fibonacci number (0-based index) efficiently.
Input: n = 6 Output: 8 (Sequence: 0, 1, 1, 2, 3, 5, 8)
Solution in C++
#includeusing namespace std; int fib(int n, vector & memo) { if (n <= 0) return 0; if (n == 1) return 1; if (memo[n] != -1) return memo[n]; memo[n] = fib(n-1, memo) + fib(n-2, memo); return memo[n]; } int fibonacci(int n) { vector memo(n + 1, -1); return fib(n, memo); } int main() { int n = 6; cout << fibonacci(n) << endl; return 0; }
Solution in Python
def fibonacci(n, memo=None): if memo is None: memo = {} if n <= 0: return 0 if n == 1: return 1 if n in memo: return memo[n] memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo) return memo[n] n = 6 print(fibonacci(n))
Explanation
Approach: Use recursion with memoization to avoid redundant calculations. Store computed Fibonacci values in a memo array/dictionary. Time Complexity: O(n), Space Complexity: O(n).
Relevance: Recursion with optimization is a GenC Elevate topic.
Question 2: Longest Common Prefix
Given an array of strings, find the longest common prefix among them.
Input: arr = ["flower", "flow", "flight"] Output: "fl"
Solution in C++
#includeusing namespace std; string longestCommonPrefix(vector & arr) { if (arr.empty()) return ""; string prefix = arr[0]; for (int i = 1; i < arr.size(); i++) { while (arr[i].find(prefix) != 0) { prefix = prefix.substr(0, prefix.size() - 1); if (prefix.empty()) return ""; } } return prefix; } int main() { vector arr = {"flower", "flow", "flight"}; cout << longestCommonPrefix(arr) << endl; return 0; }
Solution in Python
def longest_common_prefix(arr): if not arr: return "" prefix = arr[0] for s in arr[1:]: while s.find(prefix) != 0: prefix = prefix[:-1] if not prefix: return "" return prefix arr = ["flower", "flow", "flight"] print(longest_common_prefix(arr))
Explanation
Approach: Start with the first string as the prefix. For each subsequent string, shorten the prefix until it matches the start. Time Complexity: O(S) where S is the sum of all characters, Space Complexity: O(1).
Relevance: String prefix problems test pattern matching in GenC Elevate.
Question 3: Move Zeros to End
Given an array of integers, move all zeros to the end while maintaining the relative order of non-zero elements.
Input: arr = [0, 1, 0, 3, 12] Output: [1, 3, 12, 0, 0]
Solution in C++
#includeusing namespace std; void moveZeros(vector & arr) { int nonZeroPos = 0; for (int i = 0; i < arr.size(); i++) { if (arr[i] != 0) { arr[nonZeroPos++] = arr[i]; } } while (nonZeroPos < arr.size()) { arr[nonZeroPos++] = 0; } } int main() { vector arr = {0, 1, 0, 3, 12}; moveZeros(arr); for (int x : arr) cout << x << " "; cout << endl; return 0; }
Solution in Python
def move_zeros(arr): non_zero_pos = 0 for i in range(len(arr)): if arr[i] != 0: arr[non_zero_pos], arr[i] = arr[i], arr[non_zero_pos] non_zero_pos += 1 arr = [0, 1, 0, 3, 12] move_zeros(arr) print(arr)
Explanation
Approach: Move all non-zero elements to the front using a pointer, then fill the rest with zeros. Time Complexity: O(n), Space Complexity: O(1).
Relevance: In-place array manipulation is a GenC Elevate classic.
Question 4: Check if Array is Sorted and Rotated
Given an array, check if it is sorted (ascending) and rotated.
Input: arr = [3, 4, 5, 1, 2] Output: true (Sorted: [1, 2, 3, 4, 5], rotated once)
Solution in C++
#includeusing namespace std; bool isSortedRotated(vector & arr) { int n = arr.size(), drops = 0; for (int i = 0; i < n; i++) { if (arr[i] > arr[(i + 1) % n]) { drops++; } if (drops > 1) return false; } return drops == 1; } int main() { vector arr = {3, 4, 5, 1, 2}; cout << (isSortedRotated(arr) ? "true" : "false") << endl; return 0; }
Solution in Python
def is_sorted_rotated(arr): n = len(arr) drops = 0 for i in range(n): if arr[i] > arr[(i + 1) % n]: drops += 1 if drops > 1: return False return drops == 1 arr = [3, 4, 5, 1, 2] print(is_sorted_rotated(arr))
Explanation
Approach: Count the number of "drops" where an element is greater than the next (considering wrap-around). A sorted and rotated array has exactly one drop. Time Complexity: O(n), Space Complexity: O(1).
Relevance: Array properties and cyclic checks are GenC Elevate-level challenges.
Ready to conquer GenC Elevate? Access more intermediate problems and prep strategies to shine in your exam!
Master Your Prep with Jobs Addaa Resources