- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 LeetCode-Linked List Cycle
寻找链表是否有环 方法是快慢指针第一次相遇时slow走过的距离:a+b,fast走过的距离:a+b+c+b。 因为fast的速度是slow的两倍,所以fast走的距离是slow的两倍,有 2(a+b) = a+b+c+b,可以得到a=cslow肯定没有走够超过一圈,在第一圈的中间停下来。假设直接就在圆上,则必定slow走一圈相遇,若前面还有一截,则不必等到一圈即可相遇。同时起步是最远的距离。pu
2017-09-08 20:22:29 328
原创 LeetCode-Permutations && unique && next
Permutation 按照全排列的方式,每次生成后,下一个数字来插孔生成所有的情况,不然使用递归还要标记每个位置,麻烦。class Solution(object): def permute(self, nums): perms = [[]] for n in nums: new_perms = []
2017-09-08 10:58:54 305
原创 LeetCode-[单调栈]Largest Rectangle in Histogram
Link Link 单调栈使用最经典题目。 求最大矩形面积。 N2方法是枚举起点,然后不断枚举终点,在起点固定终点右移过程中记录最短距离即可。 N1方法是使用单调栈,基于的观察是对于一个连续上升的矩形来说,若当前矩形比前一个不小于就放入队列。 因为此时最优解的终点必然可以延展到当前矩形。若当前矩形小于前一个,那前一个有可能是最优解的终点。现在问题是,如何找到最优解的起点。此时以 前一个矩
2017-09-08 09:32:14 402
原创 1的个数 汉明距离
这里写链接内容1、直接位移计算int hammingWeight(int n) { int res = 0; for (int i = 0; i < 32; ++i) { res += (n & 1); n = n >> 1; } return res; }2、n和n-1进行与运算
2017-09-03 19:41:25 405
原创 LeetCode-Regular Expression Matching
这里写链接内容 这里写链接内容 这个是处理正则表达式的题目 核心问题是*的意思表示它前一位的重复次数可以为0 对于这类匹配 定义一个二维的DP数组,其中dp[i][j]表示s[0,i)和p[0,j)是否match,然后有下面三种情况 P[i][j] = P[i - 1][j - 1], if p[j - 1] != ‘*’ && (s[i - 1] == p[j - 1] || p[j -
2017-09-03 19:09:39 262
原创 KNN && KD树
KNN 给定一个训练数据集,对新的输入实例,在数据集中找到与该实例最近邻的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。 需要调节的参数1、K的个数 2、距离度量 3、分类决策规则(服从多数) import numpy as np import operator def KNN(x,dataset,k): datasetSize=dataset.shape[0]
2017-09-03 18:41:28 353
原创 LeetCode-Find the Duplicate Number
查找数组中重复元素,仅有一个元素重复但可能重复多次。数组长度为n+1,1…n每个数字最多出现一次。二分法,首先排序,因为整个数组的中位数是知道的,统计整个数组中小于n/2数字个数,若小于则重复数字在右边,反之在左边。class Solution(object): def findDuplicate(self, nums): """ :type nums: Li
2017-09-02 22:30:10 219
原创 LeetCode-Reverse Nodes in k-Group
题意:将列表每K个反转一次。 如k=2,1-2-3-4-5 2-1-4-3-5 如k=3,1-2-3-4-5 3-2-1-4-5反转方法是pre-cur-nxt pre是开始链表的头结点人为加的,是k数组前一个,last是k数组中首位,next是k数组后一个,这里将每次cur都暂存在pre的next中,使用dummy作为pre来进行,class Solution { public:
2017-09-02 22:20:25 226
原创 LeetCode-[双指针法]Container With Most Water
双指针法 即从左右两端开始扫描,若满足某种条件则会向中间移动,如此这样可以将复杂度从N2降至N题意:每个点和X轴垂直,构成一个边,任选两个组成挡板储存水,求最多能储藏多少水。分析:1、能放多少水由最短的板子决定。2、因为和位置有关,数据不能排序 3、暴力思维是枚举所有的情况,若想减少比较次数,第一反应是储存前面的最高?但是仍和两个板子间的距离有关,没有办法。使用双指针,若左边板子高,计算此时的值和
2017-09-02 21:43:41 303
原创 LeetCode-Merge k Sorted Lists
K路归并排序,将K路都放入最小堆构建起来,每次都取最小放入新的队列,然后将对应的队列再取一个放入堆中。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } *
2017-09-02 21:26:48 237
原创 梯度下降 && 线性回归 && 逻辑回归 && softmax
生成模型和判别模型不同判别方法:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知级,决策树,支持向量机等。生成方法:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(
2017-09-02 10:49:39 371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人