{"id":16489300,"url":"https://github.com/suddi/coding-challenges","last_synced_at":"2026-01-17T07:27:40.765Z","repository":{"id":16555270,"uuid":"74869945","full_name":"suddi/coding-challenges","owner":"suddi","description":"Solutions to common coding challenge questions answered in Python, JavaScript, C++ and Go","archived":false,"fork":false,"pushed_at":"2024-04-01T23:02:31.000Z","size":3327,"stargazers_count":0,"open_issues_count":13,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T05:23:21.558Z","etag":null,"topics":["algorithm-challenges","coding-challenges","python"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/suddi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-27T05:48:17.000Z","updated_at":"2021-02-10T11:40:17.000Z","dependencies_parsed_at":"2024-10-28T16:11:14.176Z","dependency_job_id":"9e8b0f70-0c13-4626-9445-61288c2c3b46","html_url":"https://github.com/suddi/coding-challenges","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/suddi/coding-challenges","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suddi%2Fcoding-challenges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suddi%2Fcoding-challenges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suddi%2Fcoding-challenges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suddi%2Fcoding-challenges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suddi","download_url":"https://codeload.github.com/suddi/coding-challenges/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suddi%2Fcoding-challenges/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm-challenges","coding-challenges","python"],"created_at":"2024-10-11T13:43:52.872Z","updated_at":"2026-01-17T07:27:40.724Z","avatar_url":"https://github.com/suddi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Coding Challenges\n\n[![CircleCI](https://circleci.com/gh/suddi/coding-challenges.svg?style=svg)](https://circleci.com/gh/suddi/coding-challenges)\n[![codecov](https://codecov.io/gh/suddi/coding-challenges/branch/master/graph/badge.svg)](https://codecov.io/gh/suddi/coding-challenges)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f49da84091a24ef8bae87bdc4ed10423)](https://www.codacy.com/app/Suddi/coding-challenges)\n[![David](https://img.shields.io/david/suddi/coding-challenges.svg)](https://david-dm.org/suddi/coding-challenges)\n[![David](https://img.shields.io/david/dev/suddi/coding-challenges.svg)](https://david-dm.org/suddi/coding-challenges?type=dev)\n[![license](https://img.shields.io/github/license/suddi/coding-challenges.svg)](https://github.com/suddi/coding-challenges/blob/master/LICENSE)\n\n[![codecov](https://codecov.io/gh/suddi/coding-challenges/branch/master/graphs/commits.svg)](https://codecov.io/gh/suddi/coding-challenges)\n\nSolutions to common coding challenge questions answered in Python 3.8, Node.js 12, C++ 11 and Go 1.14.\n\n## Setup\n\n````sh\n# Using virtualenvwrapper to manage virtual environments\npip install virtualenvwrapper\n````\n\n````sh\nmkvirtualenv coding-challenges\n\n# Install dependencies for Python\npip install --requirement requirements.txt --requirement test_requirements.txt\n\n# Install dependencies for Node.js\nnpm install\n````\n\n## Lint\n\n````sh\n# Lint Python code with Pylint\npython setup.py lint\n\n# Lint Node.js code with Eslint\nnpm run lint\n````\n\n## Test\n\n````sh\n# Run Python doctests with Pytest\npython setup.py test\n\n# Run Node.js doctests with Mocha and jsdoctest\nnpm test\n\n# Run C++ doctests with doctest.h at c++/doctest.h\nnode cpp_runner.js\n````\n\n## Python Cheatsheet\n\n### General\n\n````py\n# Swap numbers a, b\na = 3                                                               # O(1)\nb = 2                                                               # O(1)\n# a = 2, b = 3\na, b = b, a                                                         # O(1)\n\n# Format print statements\n# a = 2, b = 3\nprint(\"a = {0}, b = {1}\".format(a, b))                              # O(1)\n\n# False\nall([3, 2, -1, 0])                                                  # O(N)\n\n# True\nany([3, 2, -1, 0])                                                  # O(N)\n\n# '0b1000'\nbin(8)                                                              # O(1)\n\n# '0x58'\nhex(88)                                                             # O(1)\n\n# True\nbool(-1)                                                            # O(1)\n\n# '0'\nchr(48)                                                             # O(1)\n# 'A'\nchr(65)                                                             # O(1)\n# 'a'\nchr(97)                                                             # O(1)\n# 97\nord('a')                                                            # O(1)\n\n# See all operations available\ndir(list)                                                           # O(1)\n\n# Get position and value during iteration\nposition, value = enumerate([3, 2, -1, 0])                          # O(N)\n\n# Iterate through range\nrange(0, 5)                                                         # O(N)\n\n# Take input from stdin\na = input('What is your name? ')                                    # O(1)\n\n# True\nisinstance([3, 2, 1], list)                                         # O(1)\n\n# 'el'\n'hello'[slice(1, 3, 1)]                                             # O(j - i)\n\n# ['e', 'h', 'l', 'l', 'o']\nsorted('hello')                                                     # O(N)\n````\n\n### Functional Programming\n\n````py\n# [2, 4, 6]\nlist(map(lambda x: x * 2, [1, 2, 3]))                               # O(N)\n\n# [5, 7, 9]\nlist(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6]))                 # O(N)\n\n# [1, 3]\nlist(filter(lambda x: x % 2, [1, 2, 3]))                            # O(N)\n````\n\n### Math\n\n````py\n# Set to infinity\na = float('inf')                                                    # O(1)\n\n# Set to negative infinity\na = float('-inf')                                                   # O(1)\n\n# Raise to exponential power\n# 8\n2 ** 3                                                              # O(1)\n# 8\npow(2, 3)                                                           # O(1)\n\n# 32.3\nabs(-32.3)                                                          # O(1)\n\n# Returns a tuple containing the quotient and remainder\n# (2, 2)\ndivmod(8, 3)                                                        # O(1)\n\n# 4.22\nround(4.222, 2)                                                     # O(1)\n\n# 9\nsum([3, 4, 2])                                                      # O(1)\n````\n\n### String Operations\n\n````py\na = 'python is awesome!'                                            # O(1)\n\n# 'Python is awesome!'\na.capitalize()                                                      # O(1)\n\n# 'python is awesome!'\na.lower()                                                           # O(N)\n\n# 'PYTHON IS AWESOME!'\na.upper()                                                           # O(N)\n\n# 'Python Is Awesome!'\na.title()                                                           # O(N)\n\n# 2\na.count('o')                                                        # O(1)\n\n# True\na.endswith('!')                                                     # O(1)\n\n# False\na.startswith('javascript')                                          # O(1)\n\n# 7\na.find('is')                                                        # O(N)\n\n# -1\na.find('not')                                                       # O(N)\n\n# 7\na.index('is')                                                       # O(N)\n\n# a = 'python is awesome'\na = a[:-1]                                                          # O(N)\n\n# a = 'pythonisawesome'\na = a.replace(' ', '')                                              # O(N)\n\n# True\na.isalnum()                                                         # O(N)\n\n# True\na.isalpha()                                                         # O(N)\n\n# False\na.isdecimal()                                                       # O(N)\n\n# False\na.isdigit()                                                         # O(N)\n\n# True\na.isidentifier()                                                    # O(N)\n\n# False\na.isnumeric()                                                       # O(N)\n\n# False\na.isspace()                                                         # O(N)\n\n# False\na.istitle()                                                         # O(1)\n\n# True\na.islower()                                                         # O(N)\n\n# False\na.isupper()                                                         # O(N)\n\n# '-pythonisawesome-pythonisawesome-'\na.join('---')                                                       # O(N)\n\n# 'pythonisawesome     '\na.ljust(20)                                                         # O(N)\n\n# '     pythonisawesome'\na.rjust(20)                                                         # O(N)\n\n# 'PYTHONISAWESOME'\na.swapcase()                                                        # O(N)\n\n# 'pythonisawesome'\na.lstrip()                                                          # O(N)\n\n# 'pythonisawesome'\na.rstrip()                                                          # O(N)\n\n# 'pythonisawesome'\na.strip()                                                           # O(N)\n\n# ['python', 'awesome']\na.split('is')                                                       # O(N)\n````\n\n### List Operations\n\n````py\na = [5]                                                             # O(1)\n\n# a = 5\na[0]                                                                # O(1)\n\n# 1\nlen(a)                                                              # O(1)\n\n# a = [5, 4]\na.append(4)                                                         # O(1)\n\nb = [3, 2]                                                          # O(1)\n# a = [5, 4, 3, 2]\na.extend(b)                                                         # O(len(b)) =\u003e O(N)\n\nb = [1, 0]                                                          # O(1)\n# [5, 4, 3, 2, 1, 0]\na + b                                                               # O(len(b)) =\u003e O(N)\n\n# b = 2, a = [5, 4, 3]\nb = a.pop()                                                         # O(1)\n\n# a = []\na.clear()                                                           # O(1)\n\n# a = [5, 4, 3, 2, 1, 0]\na = [5, 4, 3, 2, 1, 0]                                              # O(1)\n\n# [3, 2]\na[2:4]                                                              # O(4 - 2) =\u003e O(j - i)\n\n# b = [5, 4, 3, 2, 1, 0]\nb = [5, 4, 3, 2, 1, 0]                                              # O(1)\n\n# True\na == b                                                              # O(N)\n\n# False\na != b                                                              # O(N)\n\n# a = [6, 5, 4, 3, 2, 1, 0]\na.insert(0, 6)                                                      # O(N)\n\n# a = [5, 4, 3, 2, 1, 0]\ndel a[0]                                                            # O(N)\n\n# a = [5, 3, 2, 1, 0]\na.remove(4)                                                         # O(N)\n\nv = 9                                                               # O(1)\n# False\nv in a                                                              # O(N)\n\n# [5, 3, 2, 1, 0]\na.copy()                                                            # O(N)\n\n# b = 5, a = [3, 2, 1, 0]\nb = a.pop(0)                                                        # O(N)\n\n# 0\nmin(a)                                                              # O(N)\n\n# 3\nmax(a)                                                              # O(N)\n\n# a = [0, 1, 2, 3]\na.reverse()                                                         # O(N)\n\n# a = [0, 1, 2, 3], b = [0, 10, 20, 30]\nb = []\nfor value in a:                                                     # O(N)\n    b.append(value * 10)                                            # O(1)\n\n# a = [0, 1, 2, 3], b = [0, 10, 20, 30]\nb = map(lambda v: v * 10, a)                                        # O(N)\n\n# a = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]\na = 3 * a                                                           # O(3N) =\u003e O(kN)\n\n# a = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]\na.sort()                                                            # O(NlogN)\n\n# a = [3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0]\na.sort(reverse=True)                                                # O(NlogN)\n\n# 9\na.index(0)                                                          # O(N)\n\n# 3\na.count(1)                                                          # O(N)\n````\n\n### Dictionary Operations\n\n````py\na = {'i': 4, 'j': 5, 'k': 6, 'l': 9, 'm': 2}                        # O(1)\n\n# 4\na['i']                                                              # O(1)\n\n# a = {'i': 1, 'j': 5, 'k': 6, 'l': 9, 'm': 2}\na['i'] = 1                                                          # O(1)\n\n# 5\nlen(a)                                                              # O(1)\n\n# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}\ndel a['i']                                                          # O(1)\n\n# 10\na.get('i', 10)                                                      # O(1)\n\n# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2, 'i': 1}\na.setdefault('i', 1)                                                # O(1)\n\n# 1, a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}\na.pop('i')                                                          # O(1)\n\n# ('m', 2), a = {'j': 5, 'k': 6, 'l': 9}\na.popitem()                                                         # O(1)\n\nv = 9\n# False\nv in a                                                              # O(1)\n\n# ['j', 'k', 'l']\na.keys()                                                            # O(1)\n\n# [5, 6, 9]\na.values()                                                          # O(1)\n\n# [('j', 5), ('k', 6), ('l', 9)]\na.items()                                                           # O(1)\n\n# a = {}\na.clear()                                                           # O(1)\n\nb = [('c', 1), ('d', 3)]\n# a = {'c': 1, 'd': 3}\na = dict(b)                                                         # O(N)\n\n# False\na == b                                                              # O(N)\n# True\na == dict(b)                                                        # O(N)\n\n# True\na != b                                                              # O(N)\n\n# a = {'c': 12, 'd': 3}\na['c'] = 12                                                         # O(1)\n\n# 'c'\nmin(a)                                                              # O(N)\n\n# 'd'\nmax(a)                                                              # O(N)\n\nb = ['a', 'e', 'i', 'o', 'u']                                       # O(1)\n# a = {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}\na = a.fromkeys(b, 'vowel')                                          # O(N)\n\n# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}\na.copy()                                                            # O(N)\n\n# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'meh', 'u': 'vowel', 'y': 'not-really-a-vowel'}\na.update({'y': 'not-really-a-vowel', 'o': 'meh'})                   # O(N)\n````\n\n### Tuple Operations\n\n````py\na = (4, 5, 6, 9, 2)                                                 # O(1)\n\n# 4\na[0]                                                                # O(1)\n\n# 5\nlen(a)                                                              # O(1)\n\n# [6, 9]\na[2:4]                                                              # O(4 - 2) =\u003e O(j - i)\n\nb = [1, 3]                                                          # O(1)\n# b = (1, 3)\ntuple(b)                                                            # O(len(b)) =\u003e O(N)\n\n# False\na == b                                                              # O(N)\n\n# True\na != b                                                              # O(N)\n\nv = 9                                                               # O(1)\n# True\nv in a                                                              # O(N)\n\n# 2\nmin(a)                                                              # O(N)\n\n# 9\nmax(a)                                                              # O(N)\n\nb = []\n# b = [8, 10, 12, 18, 4]\nfor v in a                                                          # O(N)\n    b.append(a * 2)                                                 # O(1)\n\n# (4, 5, 6, 9, 2, 4, 5, 6, 9, 2, 4, 5, 6, 9, 2)\n3 * a                                                               # O(3N) =\u003e O(kN)\n\n# 3\na.count(2)                                                          # O(N)\n\n# 4\na.index(2)                                                          # O(N)\n````\n\n### Set Operations\n\n````py\na = set([4, 5, 6, 9, 2, 4])                                         # O(1)\n\n# 5\nlen(a)                                                              # O(1)\n\n# a = {2, 4, 5, 6, 7, 9}\na.add(7)                                                            # O(1)\n\nv = 9                                                               # O(1)\n# True\nv in a                                                              # O(1)\n\n# a = {2, 4, 5, 7, 9}\na.remove(6)                                                         # O(1)\n\n# a = {2, 4, 7, 9}\na.discard(5)                                                        # O(1)\n\n# 2, a = {4, 7, 9}\na.pop()                                                             # O(1)\n\n# a = {}\na.clear()                                                           # O(1)\n\nb = [1, 1, 3]                                                       # O(1)\na = {1, 3}\na = set(b)                                                          # O(len(b)) =\u003e O(N)\n\nb = {}                                                              # O(1)\n# a = {1, 3}, b = {1, 2, 3, 6}\nfor v in a                                                          # O(N)\n    b.add(a * 2)                                                    # O(1)\n\n# False\na == b                                                              # O(N)\n\n# True\na != b                                                              # O(N)\n\n# True\na \u003c b                                                               # O(N)\n\n# True\na \u003c= b                                                              # O(N)\n\n# False\na \u003e b                                                               # O(N)\n\n# False\na \u003e= b                                                              # O(N)\n\n# {1, 2, 3, 6}\na | b                                                               # O(len(a) + len(b)) =\u003e O(M + N)\n\n# {1, 3}\na \u0026 b                                                               # O(len(a) + len(b)) =\u003e O(M + N)\n\n# {}\na - b                                                               # O(len(a) + len(b)) =\u003e O(M + N)\n\n# {2, 6}\na ^ b                                                               # O(len(a) + len(b)) =\u003e O(M + N)\n\n# {1, 3}\na.copy()                                                            # O(N)\n\n# 1\nmin(a)                                                              # O(N)\n\n# 3\nmax(a)                                                              # O(N)\n````\n\n### Object Operations\n\n````py\nclass A():\n    def __init__(self):                                             # O(1)\n        self.a = 42                                                 # O(1)\n\nv = A()                                                             # O(1)\n\n# False\nhasattr(v, 'b')                                                     # O(1)\n\n# 42\ngetattr(v, 'a')                                                     # O(1)\n\n# v.a = 42, v.b = 36\nsetattr(v, 'b', 36)                                                 # O(1)\n\n# v.b = 36\ndelattr(v, 'a')                                                     # O(1)\n````\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuddi%2Fcoding-challenges","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuddi%2Fcoding-challenges","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuddi%2Fcoding-challenges/lists"}