自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在路上的学习者

记录生活,定格瞬间

  • 博客(71)
  • 资源 (18)
  • 收藏
  • 关注

原创 LeetCode 查找 Search a 2D Matrix

思想:方法一:先确定该元素可能在的行,再在该行找该元素。时间复杂度O(max(m,n))。class Solution {public: bool searchMatrix(vector > &matrix, int target) { int m = matrix.size(); int n = matrix[0].size();

2015-04-29 12:53:49 414

原创 模拟 Jump Game

思想:每次更新所能到达的最远位置,最后看是否大于等于最后一个元素的位置。class Solution {public: bool canJump(vector& nums) { int reach = 0; for(int i=0; i<=reach && reach<nums.size()-1; i++) { reach

2015-04-29 12:24:46 374

原创 LeetCode 数组 Set Matrix Zeroes

思想:提示说明,最好的方法空间复杂度为O(1),其次空间复杂度为O(m+n),最坏的是O(m*n)。方法一:O(m*n) space开一个二维数组记录每一位置是否为空。方法二:O(m+n) space开两个一维数组,一个代表该行是否为空,一个代表该列是否为空;class Solution {public: void setZeroes(vector

2015-04-29 11:21:30 383

原创 LeetCode 模拟&栈 Simplify Path

思想:模拟栈,只保存路径(目录)名字;对于“.”,跳过;对于“..”,若不为空,弹栈;class Solution {public: string simplifyPath(string path) { vector stack; for(auto i=path.begin(); i!=path.end();) {

2015-04-29 10:13:54 409

原创 DP Minimum Path Sum

思想:方法一:DP状态方程:f[i][0] 可以提前求出; 0 f[0][i] 可以提前求出; 0 f[i][j] = min( f[i-1][j], f[i][j-1]) + grid[i][j];class Solution {public: int minPathSum(vector > &grid) { int m = grid.s

2015-04-28 22:18:54 410

原创 DP Unique Paths II

思想:方法一:DP类似上一题,这里直接用滚动数组实现。时间复杂度O(n^2),空间复杂度O(n)。注意初始map[0] = 1,针对map[0],当obstacleGrid[0][j]有1个的等于1时(有障碍),下面所有的map[0]都为0(无路径可达)。class Solution {public: int uniquePathsWithObstacles(vector

2015-04-27 20:36:06 439

原创 DP Unique Paths

思想:方法一:DP时间复杂度O(n^2),空间复杂度O(n^2)递推方程:map[0][i] = 1;  0map[i][0] = 1;  0map[i][j] = map[i-1][j] + map[i][j-1]最后结果 = map[i-1][j-1]class Solution {public: int uniquePaths(int m, int

2015-04-27 13:17:41 423

原创 编程之美 八卦的小冰

小数据AC,大数据TLE。。。题目3 : 八卦的小冰时间限制:2000ms单点时限:1000ms内存限制:256MB描述小冰是个八卦的人,最近她对一个社交网站很感兴趣。由于小冰是个机器人,所以当然可以很快地弄清楚这个社交网站中用户的信息啦。她发现这个社交网站中有N个用户,用户和用户之间可以进行互动。小冰根据

2015-04-27 12:39:45 998

原创 编程之美 扑克牌

小数据AC,大数据TLE。。。题目1 : 扑克牌时间限制:2000ms单点时限:1000ms内存限制:256MB描述一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。牌的表示方法为XY,其中X为

2015-04-27 12:36:59 1804

原创 链表 Rotate List

思想:翻转的意思就是留下最右面的K个节点,剩下的都翻到后面去。将首、尾节点相连;求出要翻转的节点个数k;尾节点向后移动k个节点;断开节点;注意的是k可能大于链表长度len,若这样,取摸后的值就是从后往前要留下的节点的个数,其余的翻转到右面去。/** * Definition for singly-linked list. * struct ListNode

2015-04-27 10:43:03 442

原创 细节&数组 Spiral Matrix II

思想:跟上题思路一样。注意用vector创建二维数组时候指定维数的方法:vectorvectorint>> res(n,vectorint>(n));class Solution {public: vector > generateMatrix(int n) { vector> res(n,vector(n));

2015-04-26 10:55:02 432

原创 编程之美 质数相关

题目3 : 质数相关时间限制:2000ms单点时限:1000ms内存限制:256MB描述两个数a和 b (a输入第一行为一个数T,为数据组数。之后每组数据包含两行。第一行为N,为集合S的大小。第二行为N个整数,表示集合内的数。输出对于每组数据输出一行,形如"Case #X: Y"。X为数据编号,从1开始,Y为最

2015-04-25 23:27:36 940

原创 编程之美 彩色的树

题目1 : 彩色的树时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作:1. 改变节点x的颜色为y;2. 询问整

2015-04-25 23:27:03 867

原创 LeetCode Spiral Matrix 细节&数组

思想:一步一步进行判断,从左往右,从上到下,从右往左,从下到上。class Solution {public: vector spiralOrder(vector > &matrix) { vector res; if(matrix.empty()) return res; int beginX = 0, endX = matrix

2015-04-25 11:42:07 387

原创 贪心 Jump Game II

思想:上一题用reach表示每一跳最远到达的位置,但是每一跳都按最远的跳不一定是最优路径(最少步数)。但是有一个是很确定的:如果当前位置超出了上一次算出的最远所能到达的位置reach,就必须step++,所以这里用一个range来记录上一次算出的最远所能到达的位置,即到了不得不跳的时候必须跳。时间复杂度O(N),空间复杂度O(1)。class Solution {pu

2015-04-25 11:00:55 482

原创 DP Jump Game

思想:如果nums[i]!=0,class Solution {public: bool canJump(vector& nums) { int reach = 0, i; for(i=0; i<nums.size(); i++) { if(i == nums.size()-1) return true;

2015-04-24 21:38:25 497

原创 LeetCode Maximum Subarray DP

思想:时间复杂度O(N),空间复杂度O(1)。从头到尾遍历,如果nums[i]比前面的子序列和大,则从nums[i]重新开始新的子序列,否则,加入nums[i]并延续前面的子序列。res取所有这些子序列中最大的。class Solution {public: int maxSubArray(vector& nums) { int res = INT

2015-04-24 20:44:47 432

原创 二分法 Pow(x, n)

思想:二分法。如果n是奇数,x^n = x^(n/2) * x^(n/2) * x ;如果n是偶数,x^n = x^(n/2) * x^(n/2) ;class Solution {public: //Pow(x, n) double func(double x, int n) { if(n == 0) return 1;

2015-04-24 17:34:17 697

原创 字符串 Anagrams

思想:题意是如果给定串中包含anagram,返回所有的anagram。什么是anagram?举个例子:teach和cheat就是一组Anagrams,它们都包含相同的字母a、c、e、h、t。所以规律就是:如果串a和串b的字典序列相同,则它们就构成一组Anagrams。用unordered_map,key为字典序列,value为一系列对应的Anagrams。class

2015-04-24 17:03:33 743

原创 取反 Single Number

思想:1^1 == 0 is true.class Solution {public: int singleNumber(vector& nums) { int i,result=nums[0]; for(int i=1;i<nums.size();i++) { result = result^nums[i];

2015-04-23 22:08:48 448

原创 DFS Permutations II

思想:此题允许序列中又重复的元素。一个判定规则:(先排序)如果num[i-1] == num[i] 且 前面的那个数还没有用过的话,则说明这样下去必定会产生重复的排列。因为进入下一深度,必然会用num[i-1],就形成了num[i],num[i-1]这样的情形,跟先前已经有的num[i-1],num[i]是重复的序列。class Solution {pub

2015-04-23 21:53:55 541

原创 DFS Permutations

思想:DFSclass Solution {public: //Permutations void dfs(vector> &res, vector num, vector &path) { if(path.size() == num.size()) { res.push_back(path); re

2015-04-23 20:32:23 584

原创 LeetCode Combination Sum II DFS

思想:与上一题相比多了previous,即如果前面的这一层已经试验过了该数,就跳过它。class Solution {public: //Combination Sum II void dfs(vector num, int target, int pos, vector &value, vector> &res) { if(target == 0

2015-04-23 19:26:01 450

原创 LeetCode Combination Sum DFS

思想:DFS。由于每个字符可出现的次数不限,所以首先对数据集这里进行了排序,每一次往下一层前进的时候,起点还是i,直到不能前进,回退,i++。class Solution {public: //Combination Sum void dfs(vector &candidates, int target, int start, vector &value, v

2015-04-23 16:47:18 633

原创 字符串 Substring with Concatenation of All Words

思想:给定s,找符合条件的串s',该s'包括给定words中的每一个word且仅包含1次,不包含其他字符,返回若干个s'的起始位置。学习unordered_map:unordered_map是一种无序的、键值对应的哈希容器。允许通过key快速索引value,不允许多个value对应到同一个key。构造函数:unordered_map(unordered_map t)

2015-04-23 16:18:33 493

原创 K链表合并 Merge k Sorted Lists

思想:分布式常见题型。刚开始的思路:逐一合并,合并的时间复杂度用O(N) ——> TLE ListNode *mergeKLists(vector &lists) { if( lists.size() == 0) return nullptr; ListNode *p = lists[0]; for(int i=1; i <

2015-04-20 20:05:50 3980

原创 DFS Generate Parentheses

思想:DFSclass Solution {public: //Generate Parentheses void generate(vector &res, string s, int n, int l, int r) { if(l==n) { s.append(n-r, ')');//add n ')'

2015-04-20 17:08:33 422

原创 DFS Letter Combinations of a Phone Number

思想:DFSclass Solution {public: const vector dict={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; void dfs(string digits, int depth, string path, vector &res) {

2015-04-20 15:40:33 553

原创 数组 Integer to Roman

思想:罗马数字基本规则:#1 基本字符罗马数字IVXLCDM阿拉伯数字1510501005001000#2 相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;#3 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;

2015-04-20 14:48:03 297

原创 数组 Container With Most Water

思想:start初始指向0,end指向size-1;若height[start]短,start++;若height[end]短,end--;即每次刷新最短的隔板。class Solution {public: int maxArea(vector& height) { int start = 0; int end = heigh

2015-04-20 14:07:28 355

原创 最长回文子串 Longest Palindromic Substring

思路:方法一:暴力,时间复杂度O(n^3),空间复杂度O(1)不断判断子串是否回文。//Longest Palindromic Substringstring longestPalindrome(string s) { int length=s.size(); int maxLength=1; int start=0; for(int i=0;i<le

2015-04-19 11:17:38 483

原创 数学技巧 ZigZag Conversion

思想:关键是归纳出元素出现位置的公式。比如 nRows =4 的情形需要下面这样的分布:第0行:0 + + 6  +  + 12第1行:1 + 5 7 +  11 第2行:2 4 + 8 10第3行:3 + + 9 (1)对于 第0行 && 第3行(最后一行):出现的元素在原串的位置依次是:0,6,12规律是:0,0+2*nRows-2=6,6+2*nRows-

2015-04-14 21:17:02 916

原创 字符串 Longest Substring Without Repeating Characters

思想:题意是 在原串中找到最长的一组每个字符最多出现一次的子串。方法是使用双指针在原串中进行扫描,时间复杂度O(n)。i表示满足条件的串的起始位置;j表示满足条件的串的结束位置;在一次遍历过程中记录长度最长的串的长度到maxLen中;j每次往前移动一单位,遇到一个新的字符,判断当前集合中是否已经存在该字符(1)若存在,移动i指针,直到排除之前出现过的这个元素;(2)

2015-04-13 22:23:11 333

转载 Ubuntu下包含2种远程桌面的方式:VINO-Server以及VNC Server

本文转自:其中Vino-Server是Ubuntu自带的远程桌面服务器,也就是在系统(System) —> 首选项(Preferences) —> 远程桌面(Remote Desktop)下,可以很容易开启,然后就可以使用VNC Viewer进行远程桌面连接。具体开通办法,可以参见《Ubuntu下开启远程桌面的方法》。不过,这种自带的Vino-Server方式有一个最显著的缺点

2015-04-13 16:32:41 996

原创 链表 Add Two Numbers

思想:注意细节。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:

2015-04-12 17:02:57 502

原创 树 Path Sum

方法一:迭代,BFS。为每个节点保存一个从root到当前节点的sum和,若到了叶子节点,比对该sum和与给定的sum是否相等。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(i

2015-04-12 14:46:06 483

原创 树 Minimum Depth of Binary Tree

思想:root为空,返回0;只有root节点,返回1;root左子树为空,返回右子树深度+1;root右子树为空,返回左子树深度+1;否则,返回左子树和右子树的最小者再+1;/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; *

2015-04-12 11:27:24 398

原创 树 Balanced Binary Tree

思想:每一节点的左支和右支的深度和不能超过1;每一节点(作为它父节点的左支或右支)都有一个深度值要返回,以便在其父节点进行平衡判断;/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2015-04-11 21:46:51 393

原创 树 Maximum Depth of Binary Tree

这里的深度是指一支上最多的节点个数。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} *

2015-04-11 21:26:23 277

原创 树 Symmetric Tree

方法一:递归/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas

2015-04-11 21:12:45 316

庖丁解牛中文分词工具

庖丁系统是个完全基于lucene的中文分词系统,它就是重新建了一个analyzer,叫做PaodingAnalyzer,这个analyer的核心任务就是生成一个可以切词TokenStream。

2014-03-25

hadoop api

hadoop api,可以快速方便的查询,利于学习。

2014-03-14

hbase权威指南

hbase权威指南,英文高清PDF格式,是入门与学习hbase的必备书籍。

2014-02-08

软件工程文档模板

软件工程文档模板,包括可行性研究报告、项目开发计划、需求规格说明书、概要设计说明书、详细设计说明书等十三个章节。

2014-02-08

php中文参考手册

php中文参考手册,chm格式,包括入门指引,安装于配置,语言参考,安全,特点,函数参考等章节。

2014-02-08

JSF控件详细说明

jsf控件的详细说明,内涵2个word文档,说明非常详细,适用,开发必备。

2013-01-28

软件工程第8版课后题答案(英文)

软件工程第8版课后题答案(英文),pdf格式

2013-01-28

Navicat MySQL

Navicat for MySQL,快速、可靠的数据库管理工具

2012-07-17

spring-3.2.0.M1

spring 3.2.0.M1,ssh架构必备

2012-07-17

hibernate jar包

hibernate,版本4.1.1.Final,框架操作数据库

2012-07-17

mysql jar包

java操作mysql数据库的驱动,版本5.1.6

2012-07-17

jmf的jar包

实现java多媒体编程的jar包,导入lib即可。

2012-07-13

apache-tomcat7.0

apache-tomcat7.0搭载环境。

2012-07-13

pager-taglib-2.0

可以用于实现自定义风格的分页技术。省去了一些繁琐的工作。

2012-07-13

Core Java Volume I

Java2核心技术(卷1),适合初学者。内容丰富,易于后期提高。

2012-07-13

简易记事本

主要实现功能: 文件(新建,打开,保存,另存为,退出) 编辑(撤销,剪贴,粘贴,复制,删除,查找,查找下一个,替换,全选,日期时间) 格式(自动换行,字体) 查看(状态栏) 帮助(关于记事本) 统计单词

2012-04-14

C#强大画图板(win7)

不仅实现了基本的绘图功能,而且实现了很多win7画图板类似的功能,欢迎初学者当做经典范例学习与提高自己的coding标准。

2012-03-14

空空如也

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

TA关注的人

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