自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【leetCode】Wildcard Matching

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

2016-10-30 21:07:17 323

原创 【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 273

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

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

2016-10-30 16:45:43 265

原创 【leetCode】Sliding Window Maximum

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

2016-10-29 12:45:01 319

原创 【leetCode】Find Median from Data Stream

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

2016-10-27 09:11:15 365

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

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

2016-10-26 11:05:24 1533

原创 【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 264

原创 leetCode_Palindrome Pairs

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

2016-10-23 11:34:39 410

原创 【leetCode】Shortest Palindrome

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

2016-10-22 11:00:18 302

原创 【leetCode】 Remove Duplicate Letters

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

2016-10-20 09:14:55 304

转载 写一段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 296

原创 leetCode_Frog Jump

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

2016-10-13 16:54:26 339

原创 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 379

原创 java的内部类

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

2016-10-10 16:46:48 248

原创 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 3719

原创 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 3370

原创 python中的静态类与方法

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

2016-10-08 11:48:21 1528

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

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

2016-10-08 11:12:58 882

原创 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 324

原创 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 845

原创 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 336

空空如也

空空如也

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

TA关注的人

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