LeetCode笔记
iCoding91
KISS
keep it simple and short
展开
-
vector机制
1、vector 本质:动态数组,里面有一个指针指向一个连续的内存空间。2、自动申请空间机制:当空间不够存储数据时,会自动申请另一片更大的空间,然后把数据拷贝过去。但是当删除或者释放里面的数据时,其存储空间不会释放,只是将内容晴空而已,只有在析构函数调用时才能自动释放缓冲空间。同时每次扩容都是增加当前空间的50%(除去第1次)。 注:析构函数等效的替代方法,释放缓冲空间。转载 2016-09-20 10:01:36 · 548 阅读 · 2 评论 -
KMP算法
前提1:模式串pattern和目标串target都是从第0位开始存储字符的。前提2:next[j-1]:存储了当Pj元素(第j+1个字符)首先与target不匹配时(令k=next[j-1]),P0......j-1 这个元素的最长公共子前缀(length-1), 也意味着target[i]下次应该与 Pnext[j-1]+1比较。假设P0与P1都与模式串匹配,且target[i]本次与转载 2016-09-20 19:55:59 · 251 阅读 · 0 评论 -
Manacher算法:求解最长回文字符串,时间复杂度为O(N)
回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。经常有一些题目围绕回文子串进行讨论,比如POJ3974最长回文,求最长回文子串的长度。朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、后缀数组、AC 自动原创 2016-10-18 22:28:41 · 516 阅读 · 0 评论 -
判断单链表是否存在环及求环入口点
整体思想:快慢指针法。快指针一次走2个节点,慢支针一次走1个节点。链表定义/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *原创 2017-05-06 11:56:05 · 1383 阅读 · 0 评论 -
牛客网第10题:动态规划 Word Break
研究了一下转的文章,自己又敲了一遍,感觉终于理解了,好好刷题,加油~转自:http://blog.csdn.net/yangliuy/article/details/43602313Given a string s and a dictionary of words dict, add spaces in s to construct a sentence wher转载 2017-05-06 19:29:12 · 484 阅读 · 0 评论 -
字典序法生成全排列算法的证明
转自:http://blog.csdn.net/cpfeed/article/details/7376132引言对一个给定数据进行全排列,在各种场合经常会用到。组合数学中,生成全排列的方法有很多,卢开澄老师的《组合数学》中就介绍了三种:序数法,字典序法,临位互换法等。其中以字典序法由于算法简单,并且使用的时候可以依照当前状态获取下一个状态,直到所有排列全部完成,方便在程转载 2017-07-04 15:59:28 · 554 阅读 · 0 评论 -
【LeetCode】Integer to Roman 和 Roman to Integer 解题报告
转自:http://blog.csdn.net/ljiabin/article/details/39968583【题目】Given a roman numeral, convert it to an integer. Or, Given an integer, convert it to a roman numeral.Input is guaranteed to be w转载 2017-07-15 10:41:06 · 330 阅读 · 0 评论