Skip to content

Instantly share code, notes, and snippets.

View crimx's full-sized avatar

CRIMX crimx

View GitHub Profile
@crimx
crimx / 数组元素左最近最大.js
Last active August 29, 2015 14:05
给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n),在Arr[0...i-1]中找到元素Arr[k],Arr[k]满足Arr[k]>Arr[i],并且i-k值最小(即最靠近)。 要求O(n)时间内找出Arr中所有元素对应的Arr[k]的位置。
var arr = [],
i;
for (i = 0; i < 10000; i++) {
arr[i] = Math.floor(Math.random()*9999);
}
// console.log(arr);
function findLG(arr) {
@crimx
crimx / 递归寻后代.js
Created August 25, 2014 17:43
编写一个JavasSript函数,给定一个DOM节点node和一个正整数n, 返回node的所有第n代后代节点(直接子节点为第1代)
function getDescendants(node, n) {
var res = [];
function f(children, lev) {
if (lev >= n) {
res = res.concat(Array.prototype.slice.apply(children));
return;
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<meta charset="utf-8">
<title>Test by Jesse</title>
</head>
<body>
<nav id = 'sidenav'>
<ul>
@crimx
crimx / 有序比较.js
Created August 26, 2014 14:29
有2个int型已经去重的数组a和b,都是已经从小到大排序好的。要求遍历b数组的数字,如果这个数字出现在a中,就将其从a删去;反之将其插入到a的适当位置,使a保持排序状态。
// O(m+n)
var foo = function(arrA, arrB) {
var iB,
iA;
for (iA = iB = 0; iB < arrB.length; iB += 1) {
while (arrB[iB] > arrA[iA] && iA < arrA.length) {
iA += 1;
}
@crimx
crimx / parseQueryString.js
Last active August 29, 2015 14:05
请编写一个 JavaScript 函数 parseQueryString,它的用途是把 URL 参数解析为一个对象,如:var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2"; var obj = parseQueryString(url); alert(obj.key0); // 输出0
function parseQueryString(str){
var pairs = str.replace(/^.*\?/, '').split('&'),
res = {};
for (var i = pairs.length - 1; i > 0; i -= 1) {
var p = pairs[i].split('=');
res[p[0]] = p[1];
}
return res;
}
@crimx
crimx / lcstr.js
Last active August 29, 2015 14:06
Bottom-up DP for longest common substring (not subsequence). http://jsperf.com/crimx-lcstr/2
/**
* Bottom-up DP for longest common substring (not subsequence).
* Time: O(m*n)
* Space: O(min(m,n))
* @author Jesse Wong (@straybugs)
*/
function lcstr(sstr, lstr) {
'use strict';
@crimx
crimx / count-letters.js
Created December 3, 2015 09:05
计算字符串中出现最多的字符和次数
function count(s) {
var r = s.split('')
.sort()
.join('')
.match(/(\w)\1*/g)
.sort(function(a,b) {
return a.length < b.length
});
return {
letter: r[0],
@crimx
crimx / weibo-hide.js
Created February 2, 2016 14:23
把所有微博设为“自己可见”。
// 把所有微博设为“自己可见”。基于档案娘助手修改,提高稳定减少卡死。
$(function() {
var mids = [];
var pageRecord = [];
var oldSearch = window.location.search;
var page = getPage();
// 获得当前页码
function getPage() {
return parseSearch().page;
@crimx
crimx / singletonify.js
Created April 7, 2016 02:18
Make any function singleton
function singletonify(_Class) {
if (typeof singletonify.prototype._singletonifyInstances === 'undefined') {
singletonify.prototype._singletonifyInstances = [];
}
var _instances = singletonify.prototype._singletonifyInstances;
var _index = _instances.push(void(0)) - 1;
function genSingleton() {
if (typeof _instances[_index] !== 'undefined') {
return _instances[_index];
} else {
@crimx
crimx / mofun.js
Created May 6, 2016 22:15
mofun avatar
$("#user_photo_upload").upload("/index.php?act=upload&mdl=upload&is_temp=1", function(ret) {
var ret_url = ret.url.replace('/', '\/');
if (ret.status === 'ok') {
$.ajax({
type: 'POST',
url: "/index.php?act=ajax&mdl=user_photo&func=user_photo_save",
data: {
"photo": {
"240x240_f": ret.filename,
"240x240_url": ret_url,