自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 latex插入图片的办法

\begin{figure}[H]\centering\includegraphics[width=.8\textwidth]{a.png}\begin{center}\end{center}\end{figure}

2017-10-12 16:29:49 656

原创 java:当父类无无参构造函数并且有其他构造函数时,子类不能调用默认构造函数

class Parent{ public Parent(int b) { } public void getA() { System.out.println("getA"); }}class Child extends Parent{ public Child() { super();//编译不通过 } public void getA() { System

2017-02-19 20:05:46 1342

原创 总结

1、并查集:http://hihocoder.com/contest/hihointerview15/solution/8312382、二分查找:下一篇博客

2017-01-22 20:09:22 325

转载 你真的能搞定二分查找吗 — 二分查找及变形

看到一篇很有意思的文章就转过来了。。。原文:首先引用一下《编程珠玑》中的两句话: 尽管给了那么充裕的时间,只有大约10%的专业程序员能够写出正确的二分查找。尽管第一个二分查找程序于1946年就公布了,但是第一个没有bug的二分查找程序在1962年才出现。当时看到这的时候,我觉得有点夸张。这里不去讨论是否真的花了20年才人们才写出正确的代码,但这两句话至少告诉

2017-01-14 20:37:27 505 2

原创 [leetCode] Expression Add Operators

题意:给定只有0-9组成的字符串,在字符串加上二元+-*使之成为一个算式,其结果等于指定的一个数思路1:首先枚举组成算式,再用栈进行计算。但是在栈的时间耗费太长,超时思路2:这个是我从网上找的。递归加运算符号。用cur表示当前值,用diff表示变化值,这个思路比较巧妙,+和-的diff和cur比较好理解。*的不太好理解,多理解就发现巧妙之处了,上代码。class Solution {

2016-11-11 20:25:27 339

原创 [leetcode]Count of Range Sum

题意:给定一个数组,判断连续子数组的和在某个区间的个数首先用sum数组存储前n个的和。然后有两种方法方法一:二叉搜索树。把前面的数组元素放到二叉搜索树上,然后中序遍历,如果该元素-某个元素小于下边界直接返回方法二:线段树。非叶子节点代表范围内的节点个数。从后往前更新即可。第二种的代码在:http://blog.csdn.net/murmured/article/details/50

2016-11-11 17:05:35 336

原创 leetCode_Scramble String

题意:我觉得中文说不清楚了,英文题照抄了~Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.Below is one possible representation of s1 = "great":

2016-11-06 19:56:35 337

原创 leetCode_Max Sum of Rectangle No Larger Than K

题意:给定一个二维整数数组,找出一个子矩形,使得该子矩形的和不超过K且和最大思路:简单的思路就是枚举起点和终点,然后每行每列sum数组,加加减减即可,显然会超时。优化的思路:枚举起点列和终点列,枚举每一行,把前面的和放在集合里,集合有lower_bound方法可以二分查找,找到合适的值即可。代码如下:class Solution {public: int maxSumSu

2016-11-03 16:38:11 345

原创 【leetCode】Word Search II

题意:给定一组二维小写字母数组和一组单词序列,问单词序列里有多少个单词能从二维数组某个点开始,上下左右移动形成?思路:单词序列用Trie树压缩,然后从树根开始,在二维数组里找单词即可。Trie树很好理解,适合于前缀重叠的情况。代码:class Solution {public: struct Node{ int end; Node *next[

2016-11-02 21:31:05 308

原创 【leetCode】 Count of Smaller Numbers After Self

题意:给定一个数组nums,返回i坐标往后的比nums[i]小的数思路:用二叉搜索树,两个数值域:val和count,val表示nums[i]的值,count表示该节点左子树节点的数量。从后向前,如果向左,则上一层的count++,如果向右,则ans+=1+root->count,存入ans数组即可。代码如下:class Solution {public: struct No

2016-11-02 19:40:43 328

转载 jsp+ajax+jquery

servlet:public class JsonAjaxServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServl

2016-11-02 11:00:42 403

原创 【leetCode】Wildcard Matching

题意:通配符匹配,有两个通配符:1、"?"匹配任意单个字母2、"*"匹配任意字母串(包括空串)思路:根据*切割成若干子串,只要从前到后能匹配即可,要注意头部、尾部和边界情况。分有没有*两种情况讨论。代码:bool isMatch(string s, string p){ if(p=="") return s==""; string t,temp="";

2016-10-30 21:07:17 309

原创 【leetCode】Regular Expression Matching

题意:正则表达式匹配,有个两个匹配原则:1、“.”与任何字符匹配2、"*"与零次或多次*之前的字符匹配思路:用递推的方法。.很容易对于*,看代码吧,说不清楚了bool match(string s,string p,int sl,int pl){ int k; // cout<<sl<<" "<<pl<<endl; if(s.length()==s

2016-10-30 21:01:52 254

原创 【leetCode】Largest Rectangle in Histogram&Maximal Rectangle

因为leetCode 的85题是84题的变种,所以合成一个博客写。84题的题意:一个直方图中,每个矩阵都是宽为1,高度不同。求在这个直方图里能画出矩形的最大面积思路:先从前到后,再从后到前,重复如下过程:用一个栈,先入第一个元素,,如果后一个元素的高度比栈顶低,则加上该数对应的宽度并弹出该元素。一直重复完。代码如下:int largestRectangleArea(vector

2016-10-30 16:45:43 244

原创 【leetCode】Sliding Window Maximum

题意:给定一个数组num和一个数k,返回num0..k-1,num1,k...的最大值思路:题目提示说要用双端队列,我的想法如下:用两个双端队列,一个记录数,一个记录下标,如果这个数比当前的队头大,就从前面插,否则就跟插入排序类似,从队尾弹出比他小的元素后,把他插进去,再把那些元素放回来。每次最大值都是队头元素,如果队头元素太老了,就弹出来。其实我这个答案跟正确答案很接近,但是我忽

2016-10-29 12:45:01 301

原创 【leetCode】Find Median from Data Stream

题意:设计一个数据结构,支持两个操作:插入数和找出该序列的中位数。也就是在一个不断增加的序列中找出中位数。思路:用两个堆,一个大顶堆,一个小顶堆。每当来一个数时,如果这个数小于大顶堆的最大值,则插入大顶堆,否则插入小顶堆。如果这两个堆的大小不一样,则调配一下(偶数个数时两个堆的大小相等,奇数个数时大顶堆的大小-1=小顶堆)。中位数操作,对于奇数时,则是大顶堆的最大值,否则则是大顶堆的最大值加上

2016-10-27 09:11:15 349

原创 【leetCode】数字转英文读数

题意:给定一个阿拉伯数字,输出对应的英文表示。思路:很简单,每三位为一组,首先返回这三位的表示,然后再加上对应的Thousand,Million之类的。如果那三位是0,返回“”有几个坑:1、如果该数本身就是0,返回Zero2、要注意空格,两种情况:情况1:比如每三位的那一组,或许是几百几十情况2:比如整个数或许就是几千(没零头)。下面的代码都有注释,对应的哪些情况。

2016-10-26 11:05:24 1509

原创 【leetCode】Interleaving String

题意:给定3个字符串s1,s2,s3,判断s3是否由s1和s2插入而成思路:分我的思路和网上的思路,其实本质是一样的。我的思路:用old1,old2数组表示上一个s3的字符能用s1和s2的哪些字符组成,new1,new2表示当前s3字母能由s1和s2组成,对于old数组的点对old1[i],old2[j],若s2[j+1]==s3[k],则在new的数组里push(i,j+1),同理若s1

2016-10-24 11:41:58 249

原创 leetCode_Palindrome Pairs

题意:给定一系列单词,若某两个单词拼接起来是回文串,则把这两个单词下标组成的二元组成为“回文对”,找出所有的回文对。方法:其实很简单,对于任意两个单词a,b,假设b的长度大于a。则a+b是回文串的条件是字符串b从最后一位到前面某一位反转字符串是a并且b串中该位置到第一位是回文串,若b+a是回文串的条件是字符串b从第一位开始到某一位反转的字符串是a并且b串中该位置到最后一位的串是回文串。所以对于

2016-10-23 11:34:39 388

原创 【leetCode】Shortest Palindrome

题意:给定一个字符串,在字符串的前面加一些字符,使之成为回文串。返回最短长度的回文串。解法:一开始看成在字符的每个字母前都可以加了,我说怎么做不出来,看解法有感觉跟我理解的不一样,还以为是解法错了,没想到是我错了。思路就是看看字符串从0开始最长的回文串是多少,假设s[0~i]是以s[0]开头的最长的回文串,那么要加的字符串为s[i+1~l]的逆序。问题就转换为如何去发现从s[0]开始的最长

2016-10-22 11:00:18 286

原创 【leetCode】 Remove Duplicate Letters

题意:对于给定一个由a-z的字符串,去掉一些字符,使得剩下的字符串出现了原字符串所出现的字母,并且这些字母仅出现一次,并且这个字符串字典序最小思路:首先判断当前从哪一位往后所有的字母都出现过,然后找从该位往前的最小字母的最前面,作为第一个字母。依次类推。具体做法是,先用26个队列把每个字母的下标一一塞进去,找出所有队列末尾的最大值,这就是上文所说的下标。然后从队列'a'开始,如果队头小于下标,

2016-10-20 09:14:55 287

转载 写一段jsp的代码,挺无聊的

// response.setContentType("text/html");// PrintWriter out = response.getWriter();// out.println("// Transitional//EN\">");// out.println("");// out.println(" A Servlet");// out.println("

2016-10-16 20:41:26 279

原创 leetCode_Frog Jump

题意:一条河被分为k个单元,每个单元也许有石头。一个青蛙从第0个单元开始跳,第一次跳到第1个单元。后序如果他上次跳了k个单元,则下次可以跳k-1,k,k+1个单元。问青蛙能不能跳到对岸。解法:大体的思路都想到了,用set记录跳到每个石头那一跳的长度,对于每一个石头,看看能不能从它前面的某个石头跳到那个石头上。但是有个细节:用jump[i]代表这个石头最远能跳到哪儿,如果连最远都跳不到某个石头,

2016-10-13 16:54:26 320

原创 leetCode_Split Array Largest Sum

题意:把一个非整数数组分成若干个子数组,使得子数组和的最大值最小题解:刚刚想起来,艾神曾经说过一看到最大值最小就得想到二分。好吧,以后区间求值都要往二分上去想,不过还是有动态规划的思路的。方法一:动态规划(n^2超时)a[s][i](表示以nums[s]结尾并且前面分成i个数组)=min(a[s][i],max(a[k][i-1],sum[s]-sum[k])),其中(i-1方法二

2016-10-12 20:26:10 361

原创 java的内部类

首先明白:内部类之前的修饰符可以为:private,protected,public,缺省和static。代码示例懒得打了,我下面说几条规则1、对于修饰符为public(没有static)的在该类的内部,初始化的方法为(非static方法):InnerClass s=new InnerClass()在该类的内部,初始化的方法为(static方法):Outer.InnerClass s=

2016-10-10 16:46:48 230

原创 javascript中exports和module.exports的区别

module.exports与exports指向的是同一块内存区域,这个内存区域里存着一个结构体,有诸多变量。到底有啥区别?app.js的代码不变,如下:var rocker = require("./log");console.log(rocker.name); 首先,让log.js的代码成下面这个样子:exports.name = function() { con

2016-10-08 16:35:17 3693

原创 javascript中的import类(module.exports)

今天研究研究了module.exports如何用,大概懂了,现在写一篇文章记录。情景:2.js里需要调用1.js里的people类。其中1.js的代码如下:function People(name){ this.name=name; this.age=0;}function People(name,age){ this.name=name; this.age=age;

2016-10-08 15:35:48 3342

原创 python中的静态类与方法

觉得语法啥限制的没有java严格,静态方法python的语法默认是这样子的: @staticmethod def s(): pass其实你把cls加进来就能调用静态变量,把self加进来就能调用自己的变量了,看看混乱的代码吧,其实对理解也有好处,静态变量和类变量的名字都一样。amazingclass TestClassMethod: def __i

2016-10-08 11:48:21 1515

原创 java子类构造函数是否需要调用父类的构造函数

恩,其实我还不知道有多少遗漏,不管了,一条一条的补缺,这是一个新的类别,用来弥补不扎实的基础知识,毕竟基础很重要哈:问题:若B类继承了A类,在B类的构造函数里是否需要调用A类的构造函数?答案:如果A类定义了构造函数(不管是不是含参),在B类的构造函数里都要显式的调用super.()如果A类,没有定义构造函数,则无所谓(因为你也没法调用)。

2016-10-08 11:12:58 858

原创 leetCode_Minimum Height Trees

题意:给定一个具有树性质的图(其实就是无向无环图),若把某一个节点作为树的根节点,则每个树都有一个高度。求最小高度树对应的根节点。解法:每一次遍历,把叶子节点都剪掉,留到最后的1——2个节点就是答案。代码:vector findMinHeightTrees(int n, vector>& edges){ vector du(n,0); map> e; vect

2016-10-08 10:51:51 299

原创 leetCode_线段树、单点更新、区间求和

class NumArray {public: NumArray(vector &nums) { trees=vector(nums.size()*4,0); int i; tempSum=0; size=nums.size(); for(i=0;i<size;i++) build(trees,i,nums[

2016-10-07 19:13:28 804

原创 leetCode_Patching Array

题意:给定一组正整数数组,要组成1——n之间的所有正整数,问最少要补充多少个数解法1:类似01背包的做法,首先看看不能组成的最小正整数啥多少,然后把这个数加进去,再重复这个步骤。很显然,时间复杂度和空间复杂度都不能满足题意,虽然这也是贪心哈。解法2:用min表示当前要找的数,i表示和数组中第几个数相比。初始化为min=1,i=0。如果min>nums[i],则min=min+nums[i]

2016-10-05 11:38:01 301

原创 leetCode_Number of Digit One

题意:给一个数,返回小于这个数的正整数中含1的个数解法:如果这个数小于等于0,返回0。           如果这个数大于0,我们就得按照每个位来判断。比如数字1159,个位上为1的数就有0001~1151共116个。那么如何判断呢?要根据每位的数字来定,详情见代码吧。先把去掉这个位上的数的所有数都存在一起。代码如下:int countDigitOne(int n){ vec

2016-09-30 17:33:35 292

原创 leetCode_发现两排好序数组的中位数

double findKth(int a[], int m, int b[], int n, int k) { //always assume that m is equal or smaller than n if (m > n) return findKth(b, n, a, m, k); if (m == 0)

2016-09-23 10:16:40 398

原创 leetCode_Word BreakII

题意:给定一个字符串和一个单词序列,判断该字符串能不能分成若干个子串,且每个子串是单词序列的词。给出所有分法。解法:分为两个步骤:首先判断是否能分,然后再给出所有的分法。判断是否能分:从后向前扫描,如果从某一位置到字符串的结尾在单词序列里,或者某一序列在单词序列并且这一序列的下一个字母已经被验证能分,则isOk[i]=true,只要判断isOk[0]是否为true就可以。给出所有分法:

2016-09-22 14:39:26 252

原创 【leetCode】Text Justification

题意:给定一组单词序列和一个最大的单词长度,要求按行显示单词,单词之间有空格,每行的最大长度不能超过给定值。对于非末行,空格的长度均匀分配,对于末行,左对齐显示,即单词之间只能有一个空格,剩余的空格在最后一个单词之后。思路:没什么特别的,纯模拟题。代码:vector fullJustify(vector& words, int maxWidth){ vector length

2016-09-21 11:32:56 230

转载 Copy List with Random Pointer -- LeetCode

http://blog.csdn.net/linhuanmars/article/details/22463599Random的思路:思路一:我的思路,用Vector存下所有节点,一个一个比对思路二:用map存下位置相同的结点,newNode->random=map.get(OldNode->random)思路三:不用辅助空间的方法,见图。

2016-09-20 15:02:09 197

原创 leetCode_Longest Consecutive Sequence

题意:在一串数组中,找出最长的连续序列(元素间的相对位置可以变化)解法:这是一题变形的DFS。先用map把所有的数字(key)和是否出现(value)存起来,然后对于每一个元素,递增找出出现的元素,再递减找出出现的元素,每一次找到某个元素,让它的key为0既可。代码:class Solution {public: int longestConsecutive(vector&

2016-09-20 10:11:35 314

原创 python之私有变量

记住两点即可:1、在变量名前加__2、__a与a是两个变量(其实很好理解哈)

2016-09-19 17:19:56 331

原创 python之from...import...和import

python是模块化的语言,假设某工程的组织如下liuhuan(python包)datatime(其中这个文件里有一个datatime的类和一个getB方法)Studentabcd(python文件)如果abcd要想调用datatime类 有两种方法:from liuhuan.datatime import datatime as bs=b()print s.get

2016-09-19 17:13:02 1826

空空如也

空空如也

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

TA关注的人

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