Loading repository data…
Loading repository data…
mandliya / repository
180+ Algorithm & Data Structure Problems using C++

| Current Status | Stats |
|---|---|
| Total C++ Problems | 188 |
| Total Python Problems | 15 |
| Current Daily Streak | 11 |
| Last Streak | 06/20/2019 - 06/21/2019 |
| Current Streak | 06/23/2019 - 07/03/2019 |
Note: Some of the code here is old and was written when I was learning C++. It might be possible that code is not safe or making wrong assumptions. Please use with caution. Pull requests are always welcome.
| Problem | Solution |
|---|---|
| Find the nth node of linked list from last. | nthToLastNode.cpp, nth_to_last_node.py |
| Add numbers where each digit of the number is represented by node of a linkedlist. Give output as a linked list. | add_two_numbers_lists.cpp, add_two_numbers_list.py |
| Swap nodes of a linkedlist without swapping data. | swapNodesWithoutSwappingData.cpp, swap_nodes_without_swapping_data.py |
| Reverse a linked list, iteratively and recursively | reverseLinkedListIterAndRecurse.cpp, reverse_linkedlist.py |
| Given a linked list, reverse alternate nodes and append at the end. | reverseAlternateNodes.cpp |
| Only given a node pointer, delete the node from the linked list. | deleteNode.cpp |
| Delete the entire linkedlist. | deleteLinkedlist.cpp |
| Print middle node of linkedlist without iterating twice. | printMiddleNode.cpp |
| Determine if a linked list is a pallindrome. | listPallindrome.cpp |
| Insert data in a sorted linked list. | insertInASortedLinkedList.cpp |
| Determine the intersection(merging) point of two given linked list. | findIntersectionPointOfLists.cpp, intersection_of_lists.py |
| Clone a linkedlist which has next and an random pointer, Space Complexity - O(1). | cloneListWithRandomPtr.cpp, clone_list_with_random_ptr.py |
| Given a sorted linked list with duplicates, remove duplicates in one iteration. | removeDuplicatesFromSortedList.cpp |
| Using Floyd's cycle finding algorithm, detect if a linkedlist contain cycle, if it does contain cycle, remove the loop | floyedCycleDetection.cpp |
| Sort a linked list using merge sort | merge_sort.cpp |
| Given a singly linked list L0 -> L1 -> … -> Ln-1 -> Ln. Rearrange the nodes in the list (in place) so that the new formed list is : L0 -> Ln -> L1 -> Ln-1 -> L2 -> Ln-2 .... | rearrange_list.cpp |
Include contains single header implementation of data structures and some algorithms.
| Data Structure/Algorithm | Implementation |
|---|---|
| Generic Macros and Algorithms like swap, random number generation | generic.h |
| Generic Stack Implementation | stack.h |
| Generic Queue Implementation | queue.h |
| Generic List Implementation | list.h |
| Binary Search Tree Implementation | binarySearchTree.h |
| Quick Sort Implementation | quickSort.h |
| Merge Sort Implementation | mergeSort.h |
| Selection Sort Implementation | selectionSort.h |
| Bubble Sort Implementation | bubbleSort.h |
| Linux Kernel Double LinkedList Implementation | double_linked_list.h |
| Generic Graph Implementation (Adjacency List) | graph.h |
| Heap Sort Implementation | heap_sort.h |
| My own string library implementation | pstring.h pstring.cpp |
| Problem | Solution |
|---|---|
| Determine if a number is a power of 2. | power_of_2.cpp |
| Add two binary number represented as string. | addBin.cpp |
| Determine the next power of 2 for a given number. | next_power_of_2.cpp |
| Using bit manipulation determine if a number is multiple of 3. | multiple_of_3.cpp |
| Determine endianess of the machine, print a number in reverse Endianess. | reverseEndianness.cpp |
| Find the parity of given number. | find_parity.cpp |
| Implement fast multiplication of a number to 7 using bit manipulation. | multiply_by_7.cpp |
| Reverse bits of unsigned integer (two methods - Reversing bit by bit & divide and conquer). | reverseBitsOfAnInteger.cpp |
| Small function to determine position of right most set bit in a given integer. | right_most_set_bit.cpp |
| Given a vector of numbers, only one number occurs odd number of times, find the number. | find_odd_one_out.cpp |
| Given two integers, determine if their sum would be interger overflow. | integerOverflow.cpp |
| Problem | Solution |
|---|---|
| Problem 1-1 : Edition 6: Write an algorithm to determine whether a string has unique characters or not. Can we do it without using additional data structures? | 1-1-hasUniqueChars.cpp, 1-1-hasUniqueChars.py |
| Problem 1-2 : Edition 5: Reverse a string when you are a pass a null terminated C string. | 1-2-edi5-reverseString.cpp |
| Problem 1-2 : Edition 6: Given two strings, determine if one is permutation of other. | 1-2-perm-strings.cpp, 1-2-perm-strings.py |
| Problem 1-3 : Edition 5: Write an algorithm to remove duplicate chars from a string. | 1-3-edi5-removeDuplicates.cpp |
| Problem 1-3 : Edition 6: URLify: Replace all the spaces in a string with '%20'. Preferebly Inplace | 1-3-URLify.cpp |
| Problem 1-4 : Edition 6: Given a string, write a function to check if it is a permutation of a pallindrome. | 1-4-pallindrome-permutations.cpp |
| Problem 1-5 : Edition 6: There are three possible edits that can be performed on a string - Insert a char, Delete a char, Replace a char. Given two strings, determine if they are one or 0 edit away. | 1-5-one-edit-away.cpp |
| Problem 1-6: Implement a method to perform basic string compression. Example string aabcccccaaa should be compressed to , however if compressed string is bigger than original string, return original string |
| How many bit flip operation would require to convert number A to B. | countNumberOfBitFlips.cpp |
| Given a number x and two positions (from right side) in binary representation of x, write a function that swaps n right bits at given two positions and returns the result. It is also given that the two sets of bits do not overlap. | swapSetOfBits.cpp |
| Add two numbers without using any arithmetic operators | addition_without_operators.cpp |
| Louise and Richard play a game. They have a counter set to N. Louise gets the first turn and the turns alternate thereafter. In the game, they perform the following operations: If N is not a power of 2, reduce the counter by the largest power of 2 less than N.If N is a power of 2, reduce the counter by half of N. The resultant value is the new N which is again used for subsequent operations.The game ends when the counter reduces to 1, i.e., N == 1, and the last person to make a valid move wins. Given N, your task is to find the winner of the game. If they set counter to 1, Richard wins, because its Louise' turn and she cannot make a move.Input Format : -The first line contains an integer T, the number of testcases. T lines follow. Each line contains N, the initial number set in the counter. | counter_game.cpp |
| Determine if two integers are of opposite signs. | check_opposite_signs.cpp |
| Swap two bits at position p and q of a given integer. | swapBits.cpp |
| Check if a number is power of 4. | check_if_power_of_4.cpp |
| 1-6-string-compression.cpp |
| Problem 1-7: Rotate the matrix clockwise( & anticlockwise) by 90 degrees | 1-7-matrix-rotation.cpp |
| Problem 1-8: Write an algorithm such that if an element of MxN matrix is 0, its entire row and column is set to 0. | 1-8-zero-matrix.cpp |
| Problem 1-9: Given two strings s1 and s2, determine s2 is rotation of s1 using only one call to a function which checks whether one string is rotation of another. | 1-9-string-rotation.cpp |
| Problem 2-1: Remove duplicates from an unsorted linked list. What if no temporary buffer is allowed. | 2-1-remove-dups.cpp |
| Problem 2-2: Determine kth node from the last of a singly linked list. (Iterative and Recursive Approaches) | 2-2-kthToLast.cpp |
| Problem 2-3: Implement an algorithm to delete a node in the middle of a singly linked list | 2-3-delete-middle-node.cpp |
| Problem 2-4: Partition a linked list around a value x, all the nodes smaller than x come before all the nodes greater than equal to x | 2-4-partition.cpp |
| Problem 2-5: You have two numberse represented by a linked list where eac |