Skip to content

Instantly share code, notes, and snippets.

View alexspark's full-sized avatar

Alex Park alexspark

  • Los Angeles, CA
View GitHub Profile
@alexspark
alexspark / looped_linked_list.py
Last active February 24, 2017 06:43
How do you find if there is a loop in a singly linked list?
""" Given a singly linked list, how do you find if there is a loop?
assumptions:
- `head` can be None or the first node in a linked list
"""
def is_loop(head):
if head is None or head.next is None:
return false
else:
first, second = head, head.next
@alexspark
alexspark / iterators.js
Last active May 20, 2017 19:33
ES6 Iterators and Generators
let fib = {
[Symbol.iterator]() {
let pre = 0, cur = 1;
return {
next() {
[pre, cur] = [cur, pre + cur];
return { done: false, value: cur }
}
}
}
@alexspark
alexspark / inUnique.js
Last active May 20, 2017 22:34
inUnique created by alexspark - https://repl.it/IIzm/1
// Implement an algorithm to determine if a string has all unique characters. What if you cannot use additional data structures?
// brute force: for each character, iterate over each character in word, if character is not self and is found, return false. time: O(n^2) where n is # of characters in word, space: O(1);
// first appraoch: for each character, look up visited hash table to see if it exists, if not add it to visited. if exists, return false. return true at end of loop. time: O(n), space: O(n);
let isUnique = (word) => {
let visited = {};
for (var char of word) {
if (!!visited[char]) {
return false
} else {
visited[char] = true;
@alexspark
alexspark / inUnique.js
Created May 20, 2017 22:34
inUnique created by alexspark - https://repl.it/IIzm/2
// Implement an algorithm to determine if a string has all unique characters. What if you cannot use additional data structures?
// brute force: for each character, iterate over each character in word, if character is not self and is found, return false. time: O(n^2) where n is # of characters in word, space: O(1);
// first appraoch: for each character, look up visited hash table to see if it exists, if not add it to visited. if exists, return false. return true at end of loop. time: O(n), space: O(n);
let isUnique = (word) => {
let visited = {};
for (var char of word) {
if (!!visited[char]) {
return false
@alexspark
alexspark / learnES6.js
Created December 15, 2017 04:33
learnES6 created by alexspark - https://repl.it/@alexspark/learnES6
// constants
const NAME = `Alex Park`
console.log(`const: ${NAME}`)
// block scope: var vs let
// best explanation so far:
// https://www.sitepoint.com/joys-block-scoping-es6/
for (var i=0; i<3; i++) {
var j = i * i
}
@alexspark
alexspark / LearnES6part2.js
Created December 15, 2017 05:00
LearnES6part2 created by alexspark - https://repl.it/@alexspark/LearnES6part2
// iterators
const fib = {
[Symbol.iterator]() {
let pre = 0, cur = 1;
return {
next() {
[ pre, cur ] = [cur, pre + cur];
return {
done: false, value: cur
};
@alexspark
alexspark / LearnES6part3.js
Created December 15, 2017 07:08
LearnES6part3 created by alexspark - https://repl.it/@alexspark/LearnES6part3
// Set data structure
let s = new Set();
s.add(1);
s.add(2);
s.add(3);
console.log(s.size);
console.log(s.has(2), s.has(10));
for (let k of s.values()) {
@alexspark
alexspark / is_height_balanced.rb
Last active January 16, 2018 08:20
Check if a binary tree is balanced or not.
class Node
attr_accessor :value, :left, :right
def initialize(value)
@value = value
end
end
def is_height_balanced?(node)
return true if node.nil?
@alexspark
alexspark / pre_order_traversal.rb
Last active January 16, 2018 08:37
Pre-order traversal of a binary tree
class Node
attr_accessor :value, :left, :right
def initialize(value)
@value = value
end
end
def pre_order_traversal(node)
puts node.value
pre_order_traversal node.left if node.left
@alexspark
alexspark / post_order_traversal.rb
Last active January 16, 2018 08:37
Post-order traversal of a binary tree
class Node
attr_accessor :value, :left, :right
def initialize(value)
@value = value
end
end
def post_order_traversal(node)
post_order_traversal node.left if node.left
post_order_traversal node.right if node.right