自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(111)
  • 收藏
  • 关注

原创 机器学习-主成分分析PCA新的理解

这两天重新看了PCA的相关知识,重新理解了下数学推导,这篇文章把该讲的都讲了,附上链接。下面是一点理解,再迷惑的时候看看。http://blog.codinglabs.org/articles/pca-tutorial.html根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目

2016-06-26 16:39:32 254

转载 机器学习 梯度下降法

转载的他人的一篇文章。回归(regression)、梯度下降(gradient descent)本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com。如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任。前言:上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看

2016-05-03 21:52:32 272 3

原创 剑指offer 二叉搜索树的第k个结点

之前寒假做了这道题用队列,队列存中序遍历的结果,然后输出第K个,这样需要浪费空间,今天重新做了一次,空间复杂度为0。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL

2016-05-01 18:00:48 221

原创 剑指offer 扑克牌顺子

很有意思的一道模拟题。class Solution {public: bool IsContinuous( vector numbers ) { int jokers = 0; int len = numbers.size(); if(len != 5) return false; for(int

2016-05-01 18:00:40 147

原创 剑指offer 和为S的连续正数序列

数学公式的推导。class Solution {public: vector > FindContinuousSequence(int sum) { vector > res; vector t; int temp1, temp2; int x; if(sum < 3) retur

2016-05-01 18:00:33 131

原创 剑指offer 数组中重复的数字

思路很棒,每一个数字去找它应在的位置。class Solution {public: // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Outp

2016-05-01 18:00:30 135

原创 剑指offer 机器人的运动范围

标准的dfs。class Solution {public: int getSum(int n){//数字各位求和 int sum = 0; for(int m = 1; m <= n; m *= 10){ sum += (n/m) % 10; } return sum; } vo

2016-05-01 18:00:00 181

原创 剑指offer 孩子们的游戏(圆圈中最后剩下的数)

约瑟夫环。有个简单的推导过程,我们可以根据每x个人出环得出从最后到开始每一次出环的人的编号。这里不再说明。class Solution {public: int LastRemaining_Solution(unsigned int n, unsigned int m) { if(n == 0 || m == 0) return -

2016-05-01 17:59:49 214

原创 二叉树的遍历方式-递归与非递归

//============================================================================//// > File : // > Author : flowertree// > Time : 2016年4月24日// > Algorith

2016-05-01 17:59:22 163

原创 剑指offer 和为S的两个数字

经典的前后指针向中逼近的题目。class Solution {public: vector FindNumbersWithSum(vector array,int sum) { vector re; int left = 0; int right = array.size() - 1; while(left < righ

2016-04-29 17:27:20 115

原创 剑指offer 左旋转字符串

巧妙地三次旋转。class Solution {public: string LeftRotateString(string str, int n) { int len = str.length(); if(len == 0) return str; if(n <= 0) return s

2016-04-29 17:25:23 128

原创 剑指offer 把字符串转换成整数

简单题目。class Solution {public: int StrToInt(string str) { if(str.size() == 0) return 0; int num = 0; bool flag = false; for(int i = 0; i < str.size();

2016-04-29 17:23:11 120

原创 剑指offer 构建乘积数组

注意这个地方vector的用法。没什么难度。class Solution {public: vector multiply(const vector& A) { vector res; int len = A.size(); if(len == 0) return res; res.resize(

2016-04-29 17:19:47 130

原创 剑指offer 对称的二叉树

很好的一道题,两个思路很经典。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*///解法1:中序遍历看是不是

2016-04-29 17:13:54 134

原创 剑指offer 表示数值的字符串

操蛋的一个题,某大神写的,自己实在没精力研究这么细。class Solution {public: bool isNumeric(char* string) { int i = 0; if(string[i]=='+' || string[i]=='-' || IsNum(string[i])){ while(strin

2016-04-29 16:57:13 97

原创 剑指offer 二叉树的下一个结点

分多种情况讨论,很好的一道题。using namespace std;/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x

2016-04-29 16:55:20 112

原创 剑指offer 按之字形顺序打印二叉树

按之字形,类似于前面一个打印二叉树的程序,那个题用两个队列,这个题用两个栈,代码用的寒假写的代码,没重新写,因为差不多。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NU

2016-04-29 16:42:33 147

原创 剑指offer 把二叉树打印成多行

利用两个队列,还有一道题是之字形输出二叉树,是用两个栈,步骤基本相同。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }

2016-04-29 16:39:20 123

原创 剑指offer 数组中只出现一次的数字

这个题有个大坑坑了我很长时间,在判断中先算&算!=,不然会出错,亲测。再所有条件中建议都稳健的加括号。class Solution {public: void FindNumsAppearOnce(vector data,int* num1,int *num2) { int len = data.size(); if(len < 2)

2016-04-29 16:14:58 130

原创 剑指offer 数字在排序数组中出现的次数

本来想偷偷用遍历水过,但是这样做练习就没意义了,本来想的是二分找到第一个K,然后前后遍历找到第一个K和最后一个K,然后返回他们的差。这样做的话时间复杂度为O(n),因为遍历的存在,这样和第一个解法没什么区别,虽然提高了一点时间效率。翻了翻书,正确的解法是不停二分查找第一个K和第二个K,这样得到了O(logN)的最小复杂度。这是个练习二分的好题目。class Solution {public:

2016-04-29 15:47:16 152

原创 剑指offer 二叉树的深度

深度优先搜索,递归。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int TreeDepth(T

2016-04-29 15:20:23 130

原创 剑指offer 平衡二叉树

处理好树高引用这一点,递归实现。、class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot == NULL) return true; int high; return isbalance(pRoot, high); }

2016-04-29 15:15:59 168

原创 剑指offer 两个链表的第一个公共结点

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2)

2016-04-29 14:51:25 129

原创 剑指offer 丑数

原poj上的题目,做过,又重新理了下思路。只是这个代码太过繁琐。class Solution {public: int GetUglyNumber_Solution(int index) { if(index == 0) return 0; int u[10005]; u[1] = 1; int u

2016-04-29 14:18:17 137

原创 剑指offer 连续子数组的最大和

动态规划。class Solution {public: int FindGreatestSumOfSubArray(vector array) { int sum = 0; int maxsum = 0xFFFFFFFF; int len = array.size(); if(len == 0) re

2016-04-29 13:55:31 92

原创 剑指offer 二叉搜索树与双向链表

挺难的一道题。class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree) { if(pRootOfTree == NULL) return pRootOfTree; pRootOfTree = ConvertNode(pRootOfTree); while(p

2016-04-29 13:53:01 127

原创 剑指offer 复杂链表的复制

分三步,分别在注释里。/*struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) { }};*/class Solution

2016-04-29 12:21:00 116 1

原创 剑指offer 二叉树中和为某一值的路径

深度优先搜索,这个题有个坑是路径必须为根节点到叶子,路途中路径和满足最终路径和也不行。需要加上当前节点是否为叶子节点的判断。这个题很好的应用了二维vector,是个练习STL的好题。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val

2016-04-29 11:57:18 164

原创 剑指offer 包含min函数的栈

刚回到家,玩了很长时间,看完了比赛,敲点代码。这个题用两个栈实现,一个为正常的栈,一个为存当前最小值的栈,很容易维护。class Solution { private: stack data, mindata;public: void push(int value) { data.push(value); if(mindata.em

2016-04-29 11:36:18 139

原创 剑指offer 滑动窗口的最大值

class Solution {public: vector maxInWindows(const vector& a, unsigned int k){ vector res; deque s; for(unsigned int i = 0; i < a.size(); ++i){ while(s.size() &

2016-04-26 17:10:08 125

原创 剑指offer 二叉搜索树的后序遍历序列

分治递归。class Solution {public: bool VerifySquenceOfBST(vector sequence) { int len = sequence.size(); if(len == 0) return false; if(len == 1) return true;

2016-04-26 11:01:01 112

原创 剑指offer 矩形覆盖

class Solution {public: int rectCover(int number) { if(number == 0) return 1; int a[10005]; a[1] = 1; a[2] = 2; for(int i = 3; i < 10005; i++)

2016-04-25 22:01:31 117

原创 剑指offer 第一个只出现一次的字符位置

class Solution {public: int FirstNotRepeatingChar(string str) { if(str.length() == 0) return -1; int len = str.length(); int temp; int num[52];

2016-04-25 21:56:14 119

原创 剑指offer 旋转数组的最小数字

特别脏的方法。class Solution {public: int minNumberInRotateArray(vector rotateArray) { int len = rotateArray.size(); if(len == 1) return rotateArray[0]; int last =

2016-04-25 21:33:17 114

原创 剑指offer 数组中出现次数超过一半的数字

每一个超过一半的数抵消一个其他的数,最后剩下的数为超过一半的数。class Solution {public: int MoreThanHalfNum_Solution(vector numbers) { int len = numbers.size(); if(len == 0) return 0; int numb

2016-04-25 21:31:53 125

原创 剑指offer 从上往下打印二叉树

继续干,广度优先搜索。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector PrintFr

2016-04-25 21:18:07 89

原创 剑指offer 链表中倒数第k个结点

先走k个结点,然后头指针和先走的节点一起走,直到先走的节点到最后的NULL,注意过程中的越界处理。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Find

2016-04-25 19:41:20 110

原创 剑指offer 反转链表

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead == NULL

2016-04-25 17:55:22 152 2

原创 剑指offer 二叉树的镜像

递归反转。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(TreeNode

2016-04-25 17:49:51 146

原创 剑指offer 斐波那契数列

递推,空间复杂度O(1)。class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; if(n == 1) return 1; int temp1, temp2, temp3; temp1 = 0;

2016-04-25 17:46:08 140 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除