算法
qfzxhy
这个作者很懒,什么都没留下…
展开
-
Queue Reconstruction by Height
Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of this p原创 2016-12-05 10:41:09 · 229 阅读 · 0 评论 -
Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array. Example: For num原创 2016-12-04 16:11:02 · 304 阅读 · 0 评论 -
167. Two Sum II
question describe: Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of原创 2016-10-30 20:09:41 · 266 阅读 · 0 评论 -
LeetCode 115、Distinct Subsequences
2种方法1、深度搜索2、动态规划public class _115_ {int totalNum = 0;public int numDistinct(String s, String t) {helper2(s, t,0);return totalNum; }public void helper2(String s, String t, int begin){if(s.le原创 2016-09-24 13:52:07 · 351 阅读 · 2 评论 -
算法导论之动态规划
动态规划(dynamic programming)是通过组合子问题解而解决整个问题的一种方法。分治法是将问题划分为一些独立的子问题,递归地求解各子问题,然后合并子问题解而得到原始问题解。2者区别在于分治法划分的子问题是独立的,而动态规划子问题是不独立的。动态规划做法是对子问题求解一次,将解存入一张表中,从而避免了重复计算。动态规划常应用于最优化问题。算法分为4步 1.描述最优解的结构 2原创 2016-08-19 13:32:22 · 802 阅读 · 2 评论 -
红黑树(删除)
红黑树的性质 1)、每个节点不是红就是黑 2)、根节点是黑 3)、每个叶节点是黑 4)、如果一个节点是红,则它的2个儿子是黑 5)、对于每个节点,该节点到其子孙叶子节点的所有路径包含相同数目的黑节点。牢记红黑树的性质删除 1)找到待删节点Z的后继y,将y的值拷贝给Z,再删除y2)如果y是红色节点,那么直接删除,不会破坏任何性质。理由如下: a、树中各节点黑高度不变 b、原创 2016-07-30 13:18:39 · 479 阅读 · 2 评论 -
红黑树(插入)
一颗高度为h的二叉查找树的操作时间复杂度都为O(h),如果二叉树高度较高时(不平衡)时间复杂度就不是很好。红黑树是许多平衡查找树中一种,它能保证最坏情况下,基本的动态集合操作为O(logn) 1. 红黑树的性质 1)、每个节点不是红就是黑 2)、根节点是黑 3)、每个叶节点是黑 4)、如果一个节点是红,则它原创 2016-07-29 22:09:03 · 444 阅读 · 0 评论 -
Binary Tree Maximum Path Sum
实现思路: 首先想到的是动态规划 + 后序遍历搜索。 1 / \ 2 3 maxPathValue = rightValue + leftValue + root.val; maxPathValue = 3 + 2 +1 leftValue 是左边分支最大的路径 rightValue 是右边分支最大的路径设置一个全局变量,用来存储最长的路径原创 2016-06-22 21:45:37 · 325 阅读 · 0 评论 -
Best Time to Buy and Sell Stock III
Best Time to Buy and Sell Stock III 首先想得的思路便是遍历 遍历数组,将数组分成左右2部分,分布对左右部分进行一次买卖,profit = leftProfit + rightProfit。public class Solution { public int maxProfit(int[] prices) { if(prices.l原创 2016-06-22 18:02:06 · 224 阅读 · 0 评论 -
Product of Array Except Self
Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i]. Solve it without division and in O(n). F原创 2016-12-06 09:53:43 · 231 阅读 · 0 评论 -
Single Number III
Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once. For example: Given nums =原创 2016-12-06 10:07:21 · 314 阅读 · 0 评论 -
windows python调用Stanford nlp tools经验
使用nltk中的自带的类来调用Stanford nlp tools一直报错,具体原因是版本的原因,nltk需要3.0版本,并且nltk3.0只支持os/linux和windowX86。 接下来将Stanford开发的第三方工具包调用Stanford parser! 首先,需要下载 StanfordParser,下载3.6.0 还需要安装第三方工具包Stanford-parser-pytho原创 2017-05-24 10:33:30 · 1481 阅读 · 1 评论 -
word2vec tool 一些命令
Options: Parameters for training: -train Use text data from to train the model -output Use to save the resulting word vectors / word clusters -size Set s原创 2017-05-23 15:42:39 · 761 阅读 · 0 评论 -
最大熵模型
熵\ 假设离散变量X的概率分布是P(X)H(P)=−∑xp(x)logp(x)H(P) = -\sum_{x}p(x)logp(x)最大熵模型定义\ 假设分类模型是条件概率P(Y|X),给定训练数据集T={(x1,y1),(x2,y2),…,(xn,yn)}学习目标就是用最大熵原理选择最好的模型\特征函数f(x,y)关于经验分布P*(X,Y)的期望值为:Ep∗=∑x,yP∗(x,y)f(x原创 2017-05-23 22:29:43 · 331 阅读 · 0 评论 -
常见的排序算法
package Sort;import java.util.Scanner;import java.util.Stack;;public class TestSort { //冒泡 //插入 //选择 //希尔 //快排 //堆排序 //归并 public void bubbleSort(int[] nums) {原创 2017-03-15 13:42:05 · 364 阅读 · 1 评论 -
归并排序空间复杂度O(1)的实现
正常的归并排序是利用分治法,即分解,解决,合并/*tmp_array[]:辅助数组。left_pos:数组左半部分的游标left_end:左边数组的右界限*/void Merge(int array[], int tmp_array[], int left_pos, int right_pos, int right_end) { int i, left_end, num_eleme原创 2016-06-27 22:29:39 · 7601 阅读 · 2 评论 -
二叉树遍历(非递归)
package Tree;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right;原创 2017-03-18 23:01:32 · 426 阅读 · 2 评论 -
位图法JAVA
位图法 bit-map(位图)法基本原理是使用位数字来表示某些元素是否存在,如8位电话号码中查重复号码,它适用于海量数据的快速查找、判重、删除等。 具体而言,位图是一个N位长的串,我们可用int[] 来描述。 例如集合{5,8,1,12,6,2},那么首先开辟2个字节的空间,也就是16位,分别对应0-15这16个数。位图缺点: 1、可读性差 2、位图存储的元素个数虽然比一般做法多,但是存储原创 2017-02-09 18:26:49 · 7323 阅读 · 0 评论 -
365. Water and Jug Problem
题意: 给定两个容量分别为x和y升的罐子。提供无限容量的水。你需要判断用这两个罐子是否可以恰好量出z升的体积。到最后量出的z升体积可以由一到两个罐子装着。 允许的操作包括: 1、将任意罐子灌满。 2、将任意罐子清空。 3、将任意罐子的水倒入另一个罐子,直到另一个罐子倒满或者自己为空为止。z = a * x + b * y 其中(x +y>=z) a,b有整数解的充要条件是 z是gcd(原创 2017-01-13 19:25:32 · 377 阅读 · 0 评论 -
wiggle sort II
题目描述: Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]….Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6]. (2) Given nu原创 2016-11-25 21:49:06 · 320 阅读 · 0 评论 -
HMM(参数训练无监督方法EM)
隐马尔可夫事实上是一个含有隐变量的概率模型 P(O|λ)=∑IP(O,I|λ)P(I|λ)P(O|\lambda) = \sum_{I}P(O,I|\lambda)P(I|\lambda) 它的训练可以用EM算法(上文已讲) 1、首先确定完全数据的对数似然函数,即p(O,I|λ)p(O,I|\lambda) 2、E-step:完全数据的期望,即Q函数Q(λ,λ¯)Q(\lambda,\ove原创 2016-07-07 11:02:54 · 4692 阅读 · 2 评论 -
HMM(利用前向后向求概率)
上文讲到用直接法求概率复杂度很大,本文讲述利用前向后向算法求概率。即给定模型参数λ,以及观测序列,求条件概率P(O|λ)P(O|λ)前向算法(一定要记住前向概率定义)前向概率。给定模型参数λ,定义t时刻部分观测序列为o1,o2,...,oto_1,o_2,...,o_t,并且状态为qiq_i的概率为前向概率。记为αt(i)=P(o1,o2,..,ot and it=qi|λ)\alpha_t(i)原创 2016-07-01 16:55:06 · 2016 阅读 · 1 评论 -
连续最大子序列和的几种算法
题目: 连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。 比如例如给定序列: { -2, 11, -4, 13, -5, -2 } 其最大连续子序列为{ 11, -4, 13 },最大和为20 思路: 1、暴力解决O(N^2) 从0开始遍历,用max存储最大子串和public int maxSubArray1(int[]原创 2016-06-26 19:15:22 · 1283 阅读 · 0 评论 -
134. Gas Station
题目: There are N gas stations along a circular route, where the amount of gas at station i is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to it原创 2016-06-26 15:17:16 · 221 阅读 · 0 评论 -
136. Single Number
题目:Given an array of integers, every element appears twice except for one. Find that single one. 一开始没有考虑空间,直接用hashMap,也AC了public class Solution { public int singleNumber(int[] nums) { Hash原创 2016-06-25 22:28:54 · 268 阅读 · 0 评论 -
137. Single Number II
题目:Given an array of integers, every element appears three times except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using原创 2016-06-25 22:54:19 · 258 阅读 · 0 评论 -
132. Palindrome Partitioning II
Given a string s, partition s such that every substring of the partition is a palindrome.Return the minimum cuts needed for a palindrome partitioning of s.For example, given s = “aab”, Return 1 since原创 2016-06-25 21:03:02 · 206 阅读 · 0 评论 -
[leetCode 131]Palindrome Partitioning
题目: Given a string s, partition s such that every substring of the partition is a palindrome.Return all possible palindrome partitioning of s.For example, given s = “aab”, Return[ [“aa”,”b”], [原创 2016-06-24 22:21:50 · 227 阅读 · 0 评论 -
[LeetCode129] Sum Root to Leaf Numbers
题目 Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the number 123.Find the total sum o原创 2016-06-24 14:29:51 · 212 阅读 · 0 评论 -
[LeetCode] Longest Consecutive Sequence
题目: Given an unsorted array of integers, find the length of the longest consecutive elements sequence.For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is [1, 2, 3原创 2016-06-24 14:10:53 · 263 阅读 · 0 评论 -
LeetCode 115、Distinct Subsequences
2种方法1、深度搜索2、动态规划public class _115_ {int totalNum = 0;public int numDistinct(String s, String t) {helper2(s, t,0);return totalNum; }public void helper2(String s, String t, int beg原创 2016-04-20 21:40:12 · 371 阅读 · 0 评论 -
57. Insert Interval
题目: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).You may assume that the intervals were initially sorted according to their start times.Examp原创 2016-06-27 14:09:03 · 248 阅读 · 0 评论 -
有序循环数组查找(无重复、有重复)
题目: 一、有序循环数组查找(无重复元素)。 有序数组如:01234 ,则 23401是一个有序循环数组思路: 二分查找,关键idea是:如果A[i]>=A[j]则【i,j】是有序的。abcdefg mid = ‘d’ 如果abcd有序,target不在abcd中,则对abc操作;如果target不在abcd中,则对efg操作 如果abcd无序,说明defg有序,如果target在def原创 2016-06-27 16:54:23 · 1326 阅读 · 0 评论 -
二叉查找树(理论及实现)
二叉查找树的定义 二叉查找树是按二叉树结构来组织的,即可按照二叉树的数据结构来构造。即每个节点都包含域left,right和key。 设x是二叉查找树的一个节点。如果y是x的左子树的一个结点,则key[y]<=key[x]。如果y是x的右子树的一个节点,则key[y]>=key[x]。如: 二叉查找树的遍历 中序遍历结果是有序,结果为3,4,5,6,7二叉查找树的查询 1、按k原创 2016-07-25 15:04:12 · 431 阅读 · 0 评论 -
EM算法简单介绍
EM背景介绍 1.概率模型有事既含有观测变量,又含有隐变量。比如HMM中的隐状态。 如果概率模型的变量是观测变量,那么给定训练数据,可以直接用最大似然估计或者最大后验估计或者贝叶斯估计来求得参数模拟数据的分布,当然也可以用非参估计(比较复杂)。但是,当模型含有隐变量,就不能简单的用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计方法。EM过程 1.EM算法是一种迭代算法。E原创 2016-07-02 22:56:43 · 1498 阅读 · 0 评论 -
HMM(参数训练一有监督训练)
上文已经讲述的HMM的第一个问题,如何用前向后向算法求解观测序列的概率。本文讲述如何训练模型一、HMM参数的训练有2种方法,一种是有监督学习,另一种是无监督学习。其中有监督学习很简单,无监督理解起来稍微困难。已知模型参数λ=(αNN,βNM,πN)\lambda = (\alpha_{NN},\beta_{NM},\pi_N)- 有监督学习直接利用计数的方式来求得模型参数 - 假设已经给出训练数原创 2016-07-02 20:04:58 · 5910 阅读 · 0 评论 -
HMM(隐马尔可夫模型入门)
一、基本概念隐马尔可夫模型隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的状态序列叫状态序列,每一个状态生成一个观测,由此生成的观测的随机序列叫观测序列。注意:这和分类有区别,这个一个序列。即P(Y|X)中X和Y都是序列。。一些参数隐马尔可夫模型由初始概率分布、状态转移概率分布、观测概率分布确定。原创 2016-06-30 22:43:57 · 739 阅读 · 0 评论 -
N语言模型(马尔科夫模型)介绍
一、马尔可夫链(语言模型方面) 假设一个长度为N的句子可以利用一串随机变量来表示,即x1, x2, …, xn,其中Xi ∈V。那么我们的语言模型是P(X1 = x1, X2 = x2,…,Xn = xn)。 显然,p(X1 = x1, X2 = x2, …, Xn = xn) = p(X1 = x1) * p(X2 = x2 | X1 = x1) * p(X3 = x3 | X原创 2016-06-30 21:29:23 · 2291 阅读 · 0 评论 -
最大熵模型
一、最大熵模型 1、模型 根据最大熵定义,我们可以将最大熵模型的学习看成约束最优化问题 给定训练数据T=(x1,y1),.....,(xn,yn)T = {(x1,y1),.....,(xn,yn)},以及特征函数(就是一个个特征,不要想得太复杂)fi(x,y)f_i(x,y)。 特征函数定义f(x,y) f(x,y)={1 x,y不满足某事实。比如训练数据中出现x:sunny,y:b原创 2016-07-23 14:59:17 · 521 阅读 · 0 评论 -
87. Scramble String
2种思路: 1、递归+剪枝 2、dp思路一、递归判断 S1的左子串L和S2的右子串 && S1的右子串和S2的左子串 是否是Scramble String!! 或者 S1的左子串L和S2的左子串 && S1的右子串和S2的右子串 是否是Scramble String!! 如果是,则return true!!! 终止条件: 当len = 1时 剪枝:每次判断S1原创 2016-06-30 15:23:04 · 238 阅读 · 0 评论