Skip to content

Repository files navigation

Coding Challenges

CircleCIcodecovCodacy BadgeDavidDavidlicense

codecov

Solutions to common coding challenge questions answered in Python 3.8, Node.js 12, C++ 11 and Go 1.14.

Setup

# Using virtualenvwrapper to manage virtual environments
pip install virtualenvwrapper
mkvirtualenv coding-challenges
# Install dependencies for Python
pip install --requirement requirements.txt --requirement test_requirements.txt
# Install dependencies for Node.js
npm install

Lint

# Lint Python code with Pylint
python setup.py lint
# Lint Node.js code with Eslint
npm run lint

Test

# Run Python doctests with Pytest
python setup.py test# Run Node.js doctests with Mocha and jsdoctest
npm test# Run C++ doctests with doctest.h at c++/doctest.h
node cpp_runner.js

Python Cheatsheet

General

# Swap numbers a, ba=3# O(1)b=2# O(1)# a = 2, b = 3a, b=b, a# O(1)# Format print statements# a = 2, b = 3print("a = {0}, b = {1}".format(a, b)) # O(1)# Falseall([3, 2, -1, 0]) # O(N)# Trueany([3, 2, -1, 0]) # O(N)# '0b1000'bin(8) # O(1)# '0x58'hex(88) # O(1)# Truebool(-1) # O(1)# '0'chr(48) # O(1)# 'A'chr(65) # O(1)# 'a'chr(97) # O(1)# 97ord('a') # O(1)# See all operations availabledir(list) # O(1)# Get position and value during iterationposition, value=enumerate([3, 2, -1, 0]) # O(N)# Iterate through rangerange(0, 5) # O(N)# Take input from stdina=input('What is your name? ') # O(1)# Trueisinstance([3, 2, 1], list) # O(1)# 'el''hello'[slice(1, 3, 1)] # O(j - i)# ['e', 'h', 'l', 'l', 'o']sorted('hello') # O(N)

Functional Programming

# [2, 4, 6]list(map(lambdax: x*2, [1, 2, 3])) # O(N)# [5, 7, 9]list(map(lambdax, y: x+y, [1, 2, 3], [4, 5, 6])) # O(N)# [1, 3]list(filter(lambdax: x%2, [1, 2, 3])) # O(N)

Math

# Set to infinitya=float('inf') # O(1)# Set to negative infinitya=float('-inf') # O(1)# Raise to exponential power# 82**3# O(1)# 8pow(2, 3) # O(1)# 32.3abs(-32.3) # O(1)# Returns a tuple containing the quotient and remainder# (2, 2)divmod(8, 3) # O(1)# 4.22round(4.222, 2) # O(1)# 9sum([3, 4, 2]) # O(1)

String Operations

a='python is awesome!'# O(1)# 'Python is awesome!'a.capitalize() # O(1)# 'python is awesome!'a.lower() # O(N)# 'PYTHON IS AWESOME!'a.upper() # O(N)# 'Python Is Awesome!'a.title() # O(N)# 2a.count('o') # O(1)# Truea.endswith('!') # O(1)# Falsea.startswith('javascript') # O(1)# 7a.find('is') # O(N)# -1a.find('not') # O(N)# 7a.index('is') # O(N)# a = 'python is awesome'a=a[:-1] # O(N)# a = 'pythonisawesome'a=a.replace(' ', '') # O(N)# Truea.isalnum() # O(N)# Truea.isalpha() # O(N)# Falsea.isdecimal() # O(N)# Falsea.isdigit() # O(N)# Truea.isidentifier() # O(N)# Falsea.isnumeric() # O(N)# Falsea.isspace() # O(N)# Falsea.istitle() # O(1)# Truea.islower() # O(N)# Falsea.isupper() # O(N)# '-pythonisawesome-pythonisawesome-'a.join('---') # O(N)# 'pythonisawesome 'a.ljust(20) # O(N)# ' pythonisawesome'a.rjust(20) # O(N)# 'PYTHONISAWESOME'a.swapcase() # O(N)# 'pythonisawesome'a.lstrip() # O(N)# 'pythonisawesome'a.rstrip() # O(N)# 'pythonisawesome'a.strip() # O(N)# ['python', 'awesome']a.split('is') # O(N)

List Operations

a= [5] # O(1)# a = 5a[0] # O(1)# 1len(a) # O(1)# a = [5, 4]a.append(4) # O(1)b= [3, 2] # O(1)# a = [5, 4, 3, 2]a.extend(b) # O(len(b)) => O(N)b= [1, 0] # O(1)# [5, 4, 3, 2, 1, 0]a+b# O(len(b)) => O(N)# b = 2, a = [5, 4, 3]b=a.pop() # O(1)# a = []a.clear() # O(1)# a = [5, 4, 3, 2, 1, 0]a= [5, 4, 3, 2, 1, 0] # O(1)# [3, 2]a[2:4] # O(4 - 2) => O(j - i)# b = [5, 4, 3, 2, 1, 0]b= [5, 4, 3, 2, 1, 0] # O(1)# Truea==b# O(N)# Falsea!=b# O(N)# a = [6, 5, 4, 3, 2, 1, 0]a.insert(0, 6) # O(N)# a = [5, 4, 3, 2, 1, 0]dela[0] # O(N)# a = [5, 3, 2, 1, 0]a.remove(4) # O(N)v=9# O(1)# Falsevina# O(N)# [5, 3, 2, 1, 0]a.copy() # O(N)# b = 5, a = [3, 2, 1, 0]b=a.pop(0) # O(N)# 0min(a) # O(N)# 3max(a) # O(N)# a = [0, 1, 2, 3]a.reverse() # O(N)# a = [0, 1, 2, 3], b = [0, 10, 20, 30]b= []
forvalueina: # O(N)b.append(value*10) # O(1)# a = [0, 1, 2, 3], b = [0, 10, 20, 30]b=map(lambdav: v*10, a) # O(N)# a = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]a=3*a# O(3N) => O(kN)# a = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]a.sort() # O(NlogN)# a = [3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0]a.sort(reverse=True) # O(NlogN)# 9a.index(0) # O(N)# 3a.count(1) # O(N)

Dictionary Operations

a= {'i': 4, 'j': 5, 'k': 6, 'l': 9, 'm': 2} # O(1)# 4a['i'] # O(1)# a = {'i': 1, 'j': 5, 'k': 6, 'l': 9, 'm': 2}a['i'] =1# O(1)# 5len(a) # O(1)# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}dela['i'] # O(1)# 10a.get('i', 10) # O(1)# a = {'j': 5, 'k': 6, 'l': 9, 'm': 2, 'i': 1}a.setdefault('i', 1) # O(1)# 1, a = {'j': 5, 'k': 6, 'l': 9, 'm': 2}a.pop('i') # O(1)# ('m', 2), a = {'j': 5, 'k': 6, 'l': 9}a.popitem() # O(1)v=9# Falsevina# O(1)# ['j', 'k', 'l']a.keys() # O(1)# [5, 6, 9]a.values() # O(1)# [('j', 5), ('k', 6), ('l', 9)]a.items() # O(1)# a = {}a.clear() # O(1)b= [('c', 1), ('d', 3)]
# a = {'c': 1, 'd': 3}a=dict(b) # O(N)# Falsea==b# O(N)# Truea==dict(b) # O(N)# Truea!=b# O(N)# a = {'c': 12, 'd': 3}a['c'] =12# O(1)# 'c'min(a) # O(N)# 'd'max(a) # O(N)b= ['a', 'e', 'i', 'o', 'u'] # O(1)# a = {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}a=a.fromkeys(b, 'vowel') # O(N)# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'vowel', 'u': 'vowel'}a.copy() # O(N)# {'a': 'vowel', 'e': 'vowel', 'i': 'vowel', 'o': 'meh', 'u': 'vowel', 'y': 'not-really-a-vowel'}a.update({'y': 'not-really-a-vowel', 'o': 'meh'}) # O(N)

Tuple Operations

a= (4, 5, 6, 9, 2) # O(1)# 4a[0] # O(1)# 5len(a) # O(1)# [6, 9]a[2:4] # O(4 - 2) => O(j - i)b= [1, 3] # O(1)# b = (1, 3)tuple(b) # O(len(b)) => O(N)# Falsea==b# O(N)# Truea!=b# O(N)v=9# O(1)# Truevina# O(N)# 2min(a) # O(N)# 9max(a) # O(N)b= []
# b = [8, 10, 12, 18, 4]forvina# O(N)b.append(a*2) # O(1)# (4, 5, 6, 9, 2, 4, 5, 6, 9, 2, 4, 5, 6, 9, 2)3*a# O(3N) => O(kN)# 3a.count(2) # O(N)# 4a.index(2) # O(N)

Set Operations

a=set([4, 5, 6, 9, 2, 4]) # O(1)# 5len(a) # O(1)# a = {2, 4, 5, 6, 7, 9}a.add(7) # O(1)v=9# O(1)# Truevina# O(1)# a = {2, 4, 5, 7, 9}a.remove(6) # O(1)# a = {2, 4, 7, 9}a.discard(5) # O(1)# 2, a = {4, 7, 9}a.pop() # O(1)# a = {}a.clear() # O(1)b= [1, 1, 3] # O(1)a= {1, 3}
a=set(b) # O(len(b)) => O(N)b= {} # O(1)# a = {1, 3}, b = {1, 2, 3, 6}forvina# O(N)b.add(a*2) # O(1)# Falsea==b# O(N)# Truea!=b# O(N)# Truea<b# O(N)# Truea<=b# O(N)# Falsea>b# O(N)# Falsea>=b# O(N)# {1, 2, 3, 6}a|b# O(len(a) + len(b)) => O(M + N)# {1, 3}a&b# O(len(a) + len(b)) => O(M + N)# {}a-b# O(len(a) + len(b)) => O(M + N)# {2, 6}a^b# O(len(a) + len(b)) => O(M + N)# {1, 3}a.copy() # O(N)# 1min(a) # O(N)# 3max(a) # O(N)

Object Operations

classA():
def__init__(self): # O(1)self.a=42# O(1)v=A() # O(1)# Falsehasattr(v, 'b') # O(1)# 42getattr(v, 'a') # O(1)# v.a = 42, v.b = 36setattr(v, 'b', 36) # O(1)# v.b = 36delattr(v, 'a') # O(1)

About

Solutions to common coding challenge questions answered in Python, JavaScript, C++ and Go

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages