自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无名山丘,崛起成峰

一个小学学历,三流程序员的非专业划水博客

  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 Leetcode 22 Generate Parentheses 搜索与DP的纠结

找出所有匹配的括号字符串,肯定是搜索啦!但是当n大的时候真的可以用搜索解决吗?加右括号的时候要注意之前的左括号必须多于右括号,然后搜吧?经常做算法题的朋友肯定知道,dfs在没有有效剪枝的情况下,复杂度是指数级的,所以虽然这题很多人是用的搜索过的,但是我并不觉得这是一个好方法。试想n为10,那么一般的搜索方法需要对20个位置进行搜多,对于2^n复杂度的方法,这绝不可能是高效的。所以后来我想到了用DP?想来想去DP好像也不行,因为DP的里面两层循环次数应该并非线性的,感觉有些像卡特兰数?具体我也说不清

2016-08-31 13:41:32 1356

原创 Leetcode 21 Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.两个有序链表归并成一个有序链表,其实比较优美的解法是用递归去解决,代码十分简洁,然而我之前有题目这

2016-08-30 19:08:30 1063

原创 Leetcode 20 Valid Parentheses

括号匹配,书上讲栈应用的一个实例,新来的和栈顶元素比较就可以了。好在这题并没有像之前的某些题目一样丧心病狂到出各种不合常理的输入数据。

2016-08-30 16:52:41 1302

原创 Leetcode 19 Remove Nth Node From End of List 超简洁代码

用一次遍历删除单链表从末尾数的第n个节点。利用类似DFS的递归解决,自认为还是挺简洁的。既然是Leetcode上的基础题,就要小题大做,我去看了一下discuss,发现有人用一种快慢指针的方法,即快指针先走n步,然后两者同时走,当快指针走到尾部时,慢指针就是要删除的节点,想法也挺好的。

2016-08-29 21:00:07 1346

原创 Leetcode 18 4Sum

想了半天还以为有什么高深的算法,没想到题解和之前的两道3Sum一样,两点法,没什么好说的。有很多人想了很多判断条件去优化程序效率,我觉得没什么必要,于是直接在15的代码上改了。附上前两道3Sum的地址,会做以后这题就肯定没问题了!

2016-08-29 20:19:13 1434

原创 Leetcode 17 Letter Combinations of a Phone Number

题意为输出所有按键可能表示的字母组合。因为不知道按键组合有多长,所以可以用搜索来做,为了效率我用的是BFS,不过好像也没快到哪里去。先打印出字典表,用队列进行搜索,算法的复杂度最优就行了,不必在意常数项的问题。

2016-08-29 19:44:28 4239 2

原创 Leetcode 16 3Sum Closest

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exact

2016-08-29 14:26:12 1264

原创 Leetcode 15 3Sum + 有趣的小BUG

题目不难,意外发现一个容易被忽视的C++小Tips。题意为找出和为0的三元组,按升序排列,不重复。首先肯定是排序,然后我习惯性想到枚举两个数,最后一个用map或者hash来表示是否存在,然而这样不是和之前某两个数求和的问题一样了吗?Leetcode显然不会这么无聊,于是我想了很久,无意中发现两点法可行,复杂度和第一种用hash的情况一样,都为n方,但是实现起来要巧妙很多,枚举第一个数,以第一个数后边的一个数和末尾的数为两点,往中间缩,如果三者的和大于零,说明最大值需要小一些,

2016-08-28 19:45:06 1616

原创 Leetcode 14 Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.以最短的字符串为limit,n方遍历所有字符串,虽然很暴力,但应该是最优解class Solution {public: string longestCommonPrefix(vector& strs) {

2016-08-28 12:39:19 1385

原创 Leetcode 13 Roman to Integer

Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.和12正好相反,理解转换规则,打一个表就行了class Solution {public: int romanToInt(string s) {

2016-08-28 11:39:10 1251

原创 Leetcode 11 Container With Most Water

最容易想到的做法是n方暴力扫两边,但是看到题目难度是medium之后,我就知道一定有更优美的做法。对,就是用两点法,其实本质是一种贪心,先说思路再来解释原理。以起始点为两端向中间缩,记录面积的最大值,每次向内移动高度较小的一方。因为向内移动每次X轴上的长度都会减少1,所以要想获得更大的面积就必须依赖于Y轴上的长度增加,而Y长度由两端的较小者决定,所以移动高度较小的一方。这里就有问题了,如果两者高度一样该怎么办呢?我想了有一会儿。在高度一样的情况下,随便移动哪一端都是没有问题的!因

2016-08-26 18:29:06 1350

原创 Leetcode 12 Integer to Roman

Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.模拟题,主要是搞清楚罗马数字的写法和规则,然后打个表就可以了。class Solution {public: string intToRoman(int num)

2016-08-26 16:54:23 1389

原创 Leetcode 10 Regular Expression Matching

正则表达式匹配,题意理解要注意.*可以理解为任意字符串,例如:isMatch("ab", ".*") → true“.”和普通字符的匹配非常容易,关键在于“*”,由于不知道它可能代表多少个字符,而前面的决定会影响后面,所以自然而然想到DFS。DFS暴搜的时候需要注意边界条件和终止搜索的条件,详见代码。

2016-08-25 18:43:59 1553

原创 Leetcode 9 Palindrome Number

不多说了,直接贴代码,注意特判负数不是回文数就行了Determine whether an integer is a palindrome. Do this without extra space.click to show spoilers.Some hints:Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, note the r

2016-08-25 14:40:08 1332

原创 Leetcode 8 String to Integer (atoi)

挺简单又挺难的一道题,就是坑太多,已经不是丧心病狂能形容了,估计这也是算法竞赛和这种面试题之间的区别吧。好吧,我承认我WA了10发,坑点请看代码注释。

2016-08-25 14:18:07 1372

原创 Leetcode 7 Reverse Integer

Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321Easy,没什么好说的注意负数和溢出的情况class Solution {public: int reverse(int x) { long long ans=

2016-08-25 12:28:19 1432

原创 leetcode 6 ZigZag Conversion

z字形填字母,推导一个简单的关系就行了第一行和最后一行在拐点处只有一个字母,所以特殊处理;中间的每一行按奇偶列处理,首先(cnt-1)*(numRows-1)是不论哪一列都必须有的;然后奇数列从上往下填,偶数列从下往上填,详见代码;

2016-08-24 20:25:23 1353

转载 Leetcode 题目列表(难度、出现频率、知识点)

不全,但好像没看到有更好的版本,刷前132题暂时凑合着用吧!转载自:LeetCode Question Difficulty Distribution       1Two Sum25arraysort 

2016-08-24 16:11:32 5276

原创 Leetcode 5 Longest Palindromic Substring

求最长回文子串的裸题,搞竞赛的时候遇到过各种花样的变式。n方的朴素算法已经烂大街了,推荐使用O(n)的算法,只可惜很久没用过manacher算法,不会写了,所以花了一段时间温故知新。manacher算法原理不了解的道友可以看这篇文章:

2016-08-24 15:47:30 1402

转载 Manacher算法 O(n)求最长回文串

最长回文Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5158    Accepted Submission(s): 1755Problem Description给出一个只由小写英文字符a,b,c...y

2016-08-24 13:23:33 1874

原创 Leetcode 4 Median of Two Sorted Arrays

想法题,最优解法确实不太好想,刚开始想了一个二分的方法。后来发现在最坏情况下,算法会退化为O(n+m),于是有了下面的想法:每次把前K小的名额均分为两半,分到两个数组中,每组获得这个名额的最大数进行PK。小的一方分到名额的数在下次分配中可以不考虑,因为已经可以确定他们必定属于前K小。同时下一次剩余的未分配名额减去本次筛选掉的名额。如此反复,直到最后只剩一个名额,或者某一组没有数。在每一组数的个数大于k/2个时,这种方法每次都可以稳定筛选掉k/2个数,因而不论什么样的情况,效率都不会明

2016-08-23 20:39:59 1433

原创 Leetcode 3 Longest Substring Without Repeating Characters

依旧水题一道,两头往后滑动,用数组映射出现的字符就行。Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.

2016-08-23 14:10:41 1354

原创 Leetcode 2 Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link

2016-08-23 13:02:39 1387

mars-arp欺骗工具

mars-arp是一款经典的arp欺骗工具,工具实用性很强!

2014-12-08

USACO 2006年数据

USACO 2006年数据,全面真实,供广大ACMer使用。

2014-04-14

空空如也

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

TA关注的人

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