Skip to content

Instantly share code, notes, and snippets.

View jimexist's full-sized avatar
:octocat:
Hiring Engineers

Jiayu Liu jimexist

:octocat:
Hiring Engineers
View GitHub Profile
@jimexist
jimexist / print_paren.c
Created March 23, 2014 03:55
generate paren
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#define MAX(A, B) ((A)>(B)?(A):(B))
static void print_paren(int n);
static void do_print(int n, int* idx, int k);
static void print_result(int n, int* idx);
@jimexist
jimexist / BinarySearch.java
Created September 8, 2013 13:32
BinarySearch
public class BinarySearch {
private BinarySearch() {
}
public static void main(String[] args) {
Integer[] data = {1,2,3,4,5,6,7,8,9};
for (int i=0; i<=10; ++i) {
System.out.println(String.format("%d: %d", i, binarySearch(data, i)));
}
@jimexist
jimexist / grey.py
Created September 8, 2013 08:04
Generate grey code
#!/usr/bin/env python
import sys
def toGrey(num):
return (num >> 1) ^ num
def generate(n):
for i in xrange(2**n):
yield toGrey(i)
@jimexist
jimexist / MultisetPermutations.java
Created September 7, 2013 10:13
MultisetPermutations
import java.util.*;
public class MultisetPermutations {
private MultisetPermutations() {
}
public static void main(String[] args) {
for (List<Integer> li : permutate(Arrays.asList(1, 1, 2, 2))) {
System.out.println(li);
}
@jimexist
jimexist / Permutations.java
Last active December 22, 2015 12:39
Permutations
import java.util.*;
public class Permutations {
private Permutations() {
}
public static void main(String[] args) {
for (List<Integer> li : permutate(Arrays.asList(1, 2, 4, 9))) {
System.out.println(li);
}
@jimexist
jimexist / Derangement.java
Created September 7, 2013 09:40
Derangement, permutation of integer array where for any i, a[i] != i
import java.util.*;
public class Derangement {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i=0; i<4; ++i) {
list.add(i);
}
for (List<Integer> li : derangement(list)) {
@jimexist
jimexist / SubWithDup.java
Created September 7, 2013 07:46
Subset with duplication
public class Solution {
public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
Arrays.sort(num);
final ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if (num.length == 0) {
result.add(new ArrayList<Integer>());
return result;
}
btrack(num, new boolean[num.length], 0, result);
return result;
@jimexist
jimexist / KSubSet.java
Created September 7, 2013 05:21
Generate subset with k elements
public class Solution {
public ArrayList<ArrayList<Integer>> combine(int n, int k) {
final ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if (k == 0) {
result.add(new ArrayList<Integer>());
return result;
}
for (int i=n; i>=1; --i) {
for (ArrayList<Integer> ai : combine(i-1, k-1)) {
ai.add(i);
@jimexist
jimexist / CountAndSay.java
Created August 24, 2013 10:05
Count And Say
import java.util.*;
public class Solution {
public String countAndSay(int n) {
List<Integer> i = new ArrayList<Integer>();
i.add(1);
while (--n > 0) {
i = say(i);
@jimexist
jimexist / EditDistance.java
Last active December 20, 2015 06:58
Edit distance using DP
public class Solution {
private static final int MATCHED = 1, DELETED = 1, INSERTED = 1;
public int minDistance(String word1, String word2) {
if (word1.length() == 0) return word2.length() * INSERTED;
if (word2.length() == 0) return word1.length() * DELETED;
if (word1.equals(word2)) return 0; // not much used though
final int rows = word1.length();