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 / PathFinding.java
Created June 9, 2014 00:35
PathFinding.java
import java.util.*;
public final class PathFinding {
static final class State {
final int ax, ay, bx, by;
final int hash;
State(int ax, int ay, int bx, int by) {
this.ax = ax;
@jimexist
jimexist / Circuits.java
Created June 9, 2014 00:36
Circuits.java
import java.util.*;
public final class Circuits {
public static int howLong(String[] connects, String[] costs) {
final int size = connects.length;
final int[][] m = new int[size][size];
for (int i=0; i<size; ++i) {
String c = connects[i];
@jimexist
jimexist / test_padding.c
Created July 4, 2014 04:39
test_padding.c
#include <stdio.h>
struct padded {
short s;
int i;
};
int main(int argc, char **argv) {
// this should give in memory (8 bytes):
// 0xffff1234, 0x00005678
@jimexist
jimexist / coin.c
Created October 1, 2014 23:33
Coin.c - minimal number of coins to get to a target amount
#include <stdio.h>
#include <stdlib.h>
int intcmp(const void *a, const void *b) {
return *((int *)a) - *((int *)b);
}
int min_coins(int coins[], size_t ncoins, int target) {
if (ncoins <=0 ) return 0;
qsort(coins, ncoins, sizeof(int), &intcmp);
@jimexist
jimexist / ZigZag.java
Created October 1, 2014 23:49
Another solution for ZigZag
public class ZigZag {
public static int longestZigZag(int[] sequence) {
final int n = sequence.length;
int[] positive = new int[n];
int[] negative = new int[n];
for (int i=0; i<n; ++i) {
positive[i] = negative[i] = 1;
}
@jimexist
jimexist / BadNeighbors.java
Created October 2, 2014 00:53
BadNeighbors
public class BadNeighbors {
public static void main(String[] args) {
int[] collections = new int[args.length];
for (int i=0; i<args.length; ++i) {
collections[i] = Integer.parseInt(args[i]);
}
System.out.printf("%d\n", maxDonations(collections));
}
@jimexist
jimexist / subset.hs
Created October 19, 2014 18:50
subset n k
subset :: Int -> Int -> [[Int]]
subset 0 _ = [[]]
subset _ 0 = [[]]
subset n k = [i:y | i <- [k..n], y <- subset (i-1) (k-1)]
@jimexist
jimexist / container.c
Created October 19, 2014 18:51
rain container
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define max(A, B) ((A) > (B) ? (A) : (B))
#define min(A, B) ((A) < (B) ? (A) : (B))
int contained(int *cont, size_t len) {
if (len == 0) {
return 0;
@jimexist
jimexist / InterruptThreadPools.java
Created November 12, 2014 05:48
InterruptThreadPools.java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class InterruptThreadPools<V> {
private final ExecutorService threadPool = Executors.newCachedThreadPool();
private final CompletionService<V> completionService = new ExecutorCompletionService<>(threadPool);
private final BlockingQueue<Future<V>> tasks = new LinkedBlockingQueue<>();
@jimexist
jimexist / OOSTest.java
Created February 8, 2015 03:31
OOSTest.java
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class OOSTest {
public static void main(String[] args) throws Exception {
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream)) {