
leetcode-java
学术状态抽奖器
Be self
展开
-
Leetcode #12 & #13 Integer to Roman & Roman to Integer 解题小节
1 题目理解这回还是调整一下结构吧,把题目理解放前面,这样生成导语的时候方便些。 这次是两道题目一起,因为是正反对应的题,11是整数到罗马数,12是罗马数字到整数关于第一个问题,整数到罗马,关键点在于理解罗马数的表达方式,大家可以自行搜索,或者看我给出的链接(在代码那里),我就在此基础上提示解题方法:根据罗马数的规则,同样的罗马符号允许出现三次,且题目给定的数字也一定是合法的,那么久直接用整除+取原创 2016-03-15 23:16:13 · 749 阅读 · 0 评论 -
Leetcode #1 Two Sum 解题小结
1 题外话最近觉得还是应该提前为将来面试做一点准备,所以准备慢慢刷下leetcode,大约每天1题的速度,保证自己不生手。在写代码的同时,同时将自己的代码和思路贴到这里。本博客可能会在我的新浪微博@MebiuW 和 个人网站同步(www.zerodigeek.com),只是可能略微延后2 原题题目的意思大致就是给定一个数组nums,这个数组里面有一些整形的变量,并且给定一个target的数字,让你从原创 2016-03-04 13:10:36 · 1625 阅读 · 0 评论 -
LeetCode #14 Longest Common Prefix 最长公共前缀 解题小节
1 题目理解题目的理解就是给定一堆字符串,从中找出最长的公共前缀。前缀是什么?可以理解为一个字符串开头的几个字母,那么公共前缀,就是这一堆字符串开头的前几个(前缀)的最大相同长度是多少。。。就是所有字符串都有的共同的开头。这道题我给了两个解题方式: 1、设index=0,遍历每一个字符串,看他们的第index位是否和第1个字符串的第index个相同,如果全部都相同,index++,进入下一路,如果原创 2016-03-16 23:16:38 · 1201 阅读 · 0 评论 -
Leetcode #2 Add Two Numbers 解题小结
1 题外话我又回来更新Leetcode了,现在准备有空做做leetcode,等着用java刷完以后再切换到其他语言试试吧~~。2 题目理解[原题](https://leetcode.com/problems/add-two-numbers/)原题的理解很简单,毕竟这是一道不太难的Medium难度的题。首先检查输入的链表是否为空,不为空才能继续,一个为空的话返回不为空的就好了(leetcode挺喜原创 2016-03-05 15:40:28 · 1012 阅读 · 0 评论 -
Leetcode #15 3Sum 三数之和 解题小节
1 题目理解给定一个数组,给定一个目标值,从里面找出三个值来,这三个值相加等于目标值。输出所有不重复的这三个值的组合,并且要注意是不能降序。。解题方式: 之前有2SUM问题2SUM解题报告,这回的做法其实也差不多(或许对于K-SUM都是,因为似乎leetcode还有4sum问题) 1、首先就是排序了,毕竟排序后方便找,也符合题目给的不降序的输出 2、选择一个值作为基准(位置i),然后在这个值后原创 2016-03-17 23:55:04 · 2834 阅读 · 0 评论 -
Leetcode #27. Remove Element 移除元素 解题报告
1 解题思想原题不就是说,给定数组,和一个目标值。。把数组里等于目标值的给删了么,最后还剩几个。。这道题虽然只说有几个。。但是似乎还是要交换的,不只是单纯的统计。。检查的时候会遍历检查的2 原题原题 Given an array and a value, remove all instances of that value in place and return the new length.Do原创 2016-03-29 23:25:15 · 2516 阅读 · 0 评论 -
Leetcode #3 Longest Substring Without Repeating Characters 解题小结
1 题目理解题目原题:Longest Substring Without Repeating Characters这道题的意思,其实也就是给定一个字符串的输入,找出一个最长的子串,而特殊要求呢,就是这个子串不能有重复的字符存在。而这道题的解题思维主要是如何界定这个子串?我总结了有如下的判断方式:最长子串一定是: * 1、要么从一开始就完全没有重复字符 * 2、从某个位置开原创 2016-03-06 15:28:33 · 628 阅读 · 0 评论 -
LeetCode #28. Implement strStr() 子串查找 解题报告
1 解题思想这道题嘛,说简单也简单,说难也难。。 题目也就是给一个母串,给一个子串。。问你母串包含子串么?1、说他简单,是因为我们可以暴力法解决,而且这道题的规模,用暴力反似乎更快。。。暴力法就是直接两个训话比较2、说他难呢。。毕竟这种题目在公司里面面试,都会让你有KMP吧,KMP理论上效率更高KMP么,就是要算NEXT数组等。。这个我真说不清楚了(要画好多图,做不到啊。。。你们网上搜一下,我这看原创 2016-03-30 23:25:24 · 982 阅读 · 0 评论 -
Leetcode #4 Median of Two Sorted Arrays 解题小节
1 题目理解leetcode原题查看 这道题给定了两个已经排序号的数组的数组,现在要求给出其中位数。 如果简单着去理解的话,我们假设一个长度为n,一个长度为m,我们用两个指针分别指向两个数组,比较着选择小的那一方的指针+1,直到总共比较大约是O(m+n))的复杂度。然而leetcode肯定不会让你那么easy的就ac这道题了,于是他要求 O(log (m+n)).有了一个log,那我们可以很容原创 2016-03-07 22:02:34 · 2395 阅读 · 0 评论 -
Leetcode #16 3Sum Closest 找3数之和最接近 解题小节
1 题目理解昨晚上光顾着吃深夜泡面,忘了更新了。。所以这一更就算是补上昨天的,今天的另算。这道题和 Leetcode #15 3Sum 三数之和 解题小节 很像,区别是#15是要三数之和等于目标值,这题是最接近就可以做法其实都一样,大家可以点进去看, 也是选择一个基准,然后设立头部和尾巴,向中间靠拢唯一的不同就是:时刻判断是否出现最接近值!2 原题3Sum Closest Given an a原创 2016-03-19 10:13:59 · 1133 阅读 · 0 评论 -
Leetcode #17 Letter Combinations of a Phone Number Z9键盘字母组合解题小节
1 题目理解此道题目基于我们前几年用的,或许还有这几年用的九宫格输入法。九宫格上的每个数字对应着不同的字母,现在说,如果给定你一个数字,问你可以对应到多少种的字母组合?这道题的解题方式,就是直接递归搜索就好,尝试每种可能。这道题我觉得考点在于自己程序的书写,如何有效率的保存和组合这些可能的字符。2 原题Letter Combinations of a Phone NumberGiven a digi原创 2016-03-19 10:26:08 · 992 阅读 · 0 评论 -
Leetcode #5 Longest Palindromic Substring 最长回文串 解题小节
1 题目理解Longest Palindromic Substring 这道题是ACM一众的在线编程OJ系统里面的常客,最长回文串。很多题目都和这道题十分的类似,因此也具有很强的参考性和经典型。什么事回文串呢?其实也就是一个字符串,正着反着看他的字符,都是一样的,比如aacc,abba之类的。最长回文串的求解法很多,比如说最简单的就是直接开for循环在最外层,然后里面再嵌套一个顺序相反的for循环原创 2016-03-08 16:51:22 · 1070 阅读 · 0 评论 -
Leetcode #29 Divide Two Integers 整数相除 解题报告
1 解题思想就是两个整数相除,不能使用内置的运算,如果溢出那么久返回最大的整数2 原题Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT. 题目需要拆解成一个基数为2的。请看我代码里面的那个连接今天好忙来不及仔细说了,见谅3 AC解原创 2016-03-31 23:39:52 · 649 阅读 · 0 评论 -
Leetcode #18 4Sum 四数之和 解题小节+K-Sum思想
1题目理解Leetcode不少题目是成一个体系的,这道题是找四数之和等于四数之和的题,之前还有2Sum和3Sum,我也已经做了题目的小节,可以点开进行查看。 Leetcode #15 3Sum 三数之和 解题小节 Leetcode #1 Two Sum 解题小结和之前的问题一样,有如下的限制: 1、最终输出的顺序是非降序的(所以我们首先需要排序) 2、不能输出重复的解(所以我们要注意移动)原创 2016-03-20 20:15:05 · 4004 阅读 · 1 评论 -
Leetcode #6 ZigZag Conversion ZigZag翻转 解题小节
(http://img.blog.youkuaiyun.com/20160309105520799)#1 原题 ZigZag Conversion 原题The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this patt原创 2016-03-09 10:53:59 · 609 阅读 · 0 评论 -
Leetcode #30. Substring with Concatenation of All Words 连续子串查找 解题报告
1 解题思想题目说给了一个原串,然后给了一组单词,让你从这个原串当中找一个区间,这个区间正好包含了这些所有的单词,不能交叉,不能有多余的值这道题是我在Leetcode 刷的最艰辛的一道题,我可能不适合这种风格的,最后我给的AC代码,有时候也可能会超时网上有说做法是用滑动窗口。。可能吧。。我看不懂所以我就是用了一个低级滑动窗口。。然后使用哈希加速,窗口期间按照顺序查看是否存在,是否满足条件,不满足的话原创 2016-04-01 23:40:38 · 638 阅读 · 0 评论 -
Leetcode #31. Next Permutation 下一个全排列 解题报告
1 解题思想这道题是给定一个排序,让你找出使用字典序的方式排序后得到的下一个全排列 什么是字典序排序? 字典排序(lexicographical order)是一种对于随机变量形成序列的排序方法。其方法是,按照字母顺序,或者数字小大顺序,由小到大的形成序列。其实也就是将全排列按照字典序的方式,得到一个递增的序列。那么我们如何确定下一个字典序?做法,对于当前序列有: 1、找到从右边(末原创 2016-04-02 23:49:50 · 1143 阅读 · 0 评论 -
Leetcode #32. Longest Valid Parentheses 最长括号对 结题报告
1 结题思想题目会给出一定的“((())))”等的括号对,问你说最长的有效括号对是多长?这道题,需要用Stack,并且不能单纯的统计(或),且出栈,其大致有如下的规则:1、遇到(要压栈当前位置 2、遇到)时,如果还有(在栈中,那么计算此个括号对的长度 3、如果)时,如果没有(在栈中,那么检查上一次匹配开始的位置 last, 4、如果)时,没有(在栈中,那么last就需要重置,这点和3相关总结:原创 2016-04-03 23:06:56 · 1006 阅读 · 0 评论 -
Leetcode #19. Remove Nth Node From End of List 移除倒数第N个链表节点 解题小节
1 题目理解我昨天又忘了更新了。。~~(>_<)~~ 先补这道题就是说,删除链表的倒数第N个节点。。 链表本身是不知道有多少个元素的。。不过这种题都一个解法 设置Faster和slower两个指针,faster指针比slower先走k-1步。。然后再一起移动。。这样faster到头时,slower也指向了倒数第k个了~~~然后就标准的移除了。。很简单。。不多说,取快递去了2 原题Remove N原创 2016-03-22 12:10:40 · 953 阅读 · 1 评论 -
LeetCode #7 Reverse Integer 翻转整数 解题小节
1 原题Reverse Integer 翻转 Reverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -3212 解析大水题啊,就是给定一个数,让你翻转。。。就是小心溢出就好。。 防止溢出方式很多: 1、比如转变成Long,再加判断就不会溢出了。。 2、或者找到比最大最小值小原创 2016-03-10 23:51:53 · 639 阅读 · 0 评论 -
Leetcode #33. Search in Rotated Sorted Array 旋转数组查询 解题报告
1 解题思想这倒题是在一个已经折叠好的排序数组中,找到一个目标值: 这道题还有个版本2,这题没有重复,下一题有重复解题方式: 1、找到旋转点:也是近似于二分查找,每次必然有一半是有序的(分段最左小于最右)另一段相对无序(分段最左大于最右),用这个规则去找 2、二分查找2 原题Search in Rotated Sorted Array Suppose a sorted array is ro原创 2016-04-04 23:53:42 · 932 阅读 · 0 评论 -
Leetcode #20 Valid Parentheses 括号验证 解题小节
1 题目理解这道题,做的事情就是匹配{} [] ()等括号的工作,检查其是否合法。 其实所谓的合法就是:有几个左边的,就有几个右边的,只要左括号的出现和右括号出现的次数一样。。。并且左边的一定比右边的先出现。。所以做法就是: 1、设置六个变量或者使用数组,分别记录这三类括号的左边,和右边出现的频率,遇到左边的就+1,右边也是对应的+1。 2、在遍历的过程中,每对括号右边的计数不能大于左边的,不原创 2016-03-22 23:40:07 · 928 阅读 · 0 评论 -
LeetCode #8 String to Integer (atoi) 字符串转数字 解题小节
1 原题String to Integer (atoi)Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what ar原创 2016-03-11 23:30:21 · 831 阅读 · 0 评论 -
Leetcode #9 Palindrome Number 回文数 解题小节
1 原题Palindrome Number Determine whether an integer is a palindrome. Do this without extra space.2 题目理解顾名思义,回文数,正着和反着顺序下数值一样所以解法就是颠倒一下,判断一下相等。。。反正如果是回文数,反转也是绝对不会溢出的。。要是反转溢出了,也肯定不是一个,所以放心反转 3 AC 解public原创 2016-03-12 23:48:57 · 1107 阅读 · 0 评论 -
Leetcode #21 Merge Two Sorted Lists 合并有序链表 解题报告
0 题外话嗯,从这次开始我就把题目换一下,改成解题报告了,因为我小节小结总是不分,等有时间也去改下之前的解题报告咯~~我算了下自己的速度,作为一个本学期的额外爱好,到现在21天刷了100题,速度也还算好,毕竟像今天这样基本一题没法刷的时间占到一周的一半多的时间。1 解题思想题目是给两个单链表,里面的数值都是有序的,现在要求他们合并成一个有序链表。这道题的做法就是,从两个单链表的头结点开始分别设立两个原创 2016-03-23 20:54:15 · 2086 阅读 · 2 评论 -
Leetcode #34. Search for a Range 范围搜寻 解题报告
1 解题思想题目给了一个允许重复的,已排序的数组,和一个目标值,让你把这个值所出现的位置都找出来,难度在于,要求时间复杂度为O(log n).既然时间复杂度要求O(log n),那么肯定是要用一些技巧的,我的方法就是二分查找了,两次二分查找,分别找头和尾,思想都是一样的,只是处理的略有不同罢了2 原题Given a sorted array of integers, find the startin原创 2016-04-06 10:35:34 · 867 阅读 · 0 评论 -
Leetcode #35. Search Insert Position 搜寻插入位置 解题报告
1 解题思想给定一个排好序的数组,和一个目标值,求找出能够插入的位置 数组的元素没有重复额,这道题直接二分查找,就能找到位置了,就是上一道题的弱化版,可以点进去看看 Leetcode #34. Search for a Range 范围搜寻 解题报告2 原题Given a sorted array and a target value, return the index if the targ原创 2016-04-06 10:43:23 · 603 阅读 · 0 评论 -
Leetcode #10 Regular Expression Matching 正则表达式匹配 解题小节
1 原题原题Implement regular expression matching with support for ‘.’ and ‘*’.‘.’ Matches any single character. ‘*’ Matches zero or more of the preceding element.The matching should cover the entire input原创 2016-03-13 23:59:39 · 969 阅读 · 0 评论 -
Leetcode #22 Generate Parentheses 创建括号 解题报告
1 解题思路这道题是创建括号对,在做题之前可以首先看下这个 Leetcode #20 Valid Parentheses 括号验证 解题小节,这道题的意思也就是给一个数值n,问你用n对圆括号()可以怎么组合?首先来说,基本的想法肯定就是递归了,这个很简单,我就不细说,我只再说下什么是合法的括号对 1、无论什么时候”(“的数量都大于等于“)”就这条规则,所以递归的时候你们知道怎么递归了吧?2 原题G原创 2016-03-24 22:48:36 · 916 阅读 · 0 评论 -
LeetCode #11 Container With Most Water 最大容器 解题小节
1 原题 原题Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Fi原创 2016-03-14 23:35:53 · 584 阅读 · 0 评论 -
Leetcode #23 Merge k Sorted Lists 合并K个有序列表 解题报告
1 解题报告嗯,这道题又是一系列的题了。。再看这个之前请先看下K=2的情况时,应该怎么做 Leetcode #21 Merge Two Sorted Lists 合并有序链表 解题报告嗯,我好想就是把这题的代码拿过来改改就成的了。。 合并K个,其实不需要每次都同时考虑K个,请用合并排序的思想,第一轮12合并,34合并。。。。形成新的K/2个链表,然后第二轮重复,直到最后只剩一个。OK说清楚了,原创 2016-03-25 23:28:06 · 1436 阅读 · 0 评论 -
Leetcode #36. Valid Sudoku 数独游戏验证 解题报告
1 解题思想九宫格验证,验证这个数独游戏的棋盘是否合法,这题做的不是求解答案,只是看给定的棋盘是否合法!做法没什么特别的,分块,行,列都要验证,即一个分组单位里1-9有且只能出现一次注意空间优化2 原题Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.The Sudoku board could be p原创 2016-04-07 23:59:34 · 1352 阅读 · 0 评论 -
Leetcode #40. Combination Sum II 组合求和2 解题报告
1 解题思想这道题是昨天的升级版,先看看这个 Leetcode #39. Combination Sum 组合求和 解题报告这道题的改变就是每个位置的数只能用一次了,但是如果本身就给了多个的话就无所谓。 基本方法一样,关键是对于重复的那里处理: 请看我代码里面的这一条 关键在于这部防止重复,规则就是排序后,如果当前位置i的数字和i-1的一样,那么必须要i用过后,i-1才能用,不然必须跳过原创 2016-04-11 23:57:30 · 1112 阅读 · 0 评论 -
Leetcode #24. Swap Nodes in Pairs 链表节点交换 解题报告
1 解题思想这道题说的是给定一个链表,然后让你在这个链表里面的每两个形成一组,每组内的两个进行交换。。。当然我们是不能修改组内的值的,就这样。这道题就是组内交换,链表的交换。。没什么难点就是注意两点: 1、第一个节点交换,注意头结点位置 2、最后一组节点交换后,记得把尾巴擦干净。上面这两句话好像有点多余,后面我记得还有到以K为单位的。。K=2的情况好像交换后也不影响。。。恩恩2 原题Swap N原创 2016-03-26 23:55:22 · 865 阅读 · 0 评论 -
Leetcode #37. Sudoku Solver 数独求解 结题报告
1 解题报告首先可以看下昨天的 Leetcode #36. Valid Sudoku 数独游戏验证 解题报告 数独的求解,这道题可以假设给定的这个是正确的做法就只能是暴力的回溯了。。方法是回溯,用各个标志位来标志是否存在冲突如果数字原来就有了,那么就跳过处理因为答案只有一个,所以一旦找到,就要立马跳出递归(如果你用的是栈实现的回溯可能会好处理些)总之就是仔细些。。。我一次写过的,而且耗时貌原创 2016-04-08 23:58:50 · 1678 阅读 · 0 评论 -
Leetcode #41. First Missing Positive 第一个不在的正数 解题报告
1 解题思想其实很简单,把数组对应的值交换到第i位上,全部扫描完后,在扫一道,看第i个位置上的值,是否是i,不是的话就是这个是第一个不存在的今天好累~~上了10.5小时的课,然后赶作业。。好累。。就不详细写了,有问题留言。。。LeetCode #41 22岁最后一天写的。。嗯~~2 原题Given an unsorted integer array, find the first missing p原创 2016-04-12 23:55:30 · 923 阅读 · 0 评论 -
Leetcode #25 Reverse Nodes in k-Group K区间链表交换 解题报告
1 解题思想昨天在写组内交换的时候我就说了,肯定有K组版的,结果就是今天啊。。嗯,因为我写的和做的不同步,所以已经不记得题目顺序了。那么在看今天的之前,可以先去回顾下昨天的,今天的是昨天的推广版,昨天的可以理解为今天的K=2的特殊情况。 Leetcode #24. Swap Nodes in Pairs 链表节点交换 解题报告所以题目的意思也就是说,给定一个链表,每K个为一个小组,小组内的顺序进原创 2016-03-27 22:07:45 · 743 阅读 · 0 评论 -
Leetcode #55. Jump Game 跳跃游戏 解题报告
1 解题思想这道题的意思,就是给了一个数组,数组里面表示的是在这个位置上,最大可跳跃的位置。 那么现在,就假设你在0的位置上,问你可以跳跃到最末尾的位置吗?那么这道题的思路就是使用一个贪心法,使用一个步进指针,用一个上界指针。 每次遍历的时候,不停的更新上界指针的位置(也就是当前位置+当前可以跳到的位置),知道看你能遇到结尾吗?如果成功了,就范围true,没有就返回false2 原题Given原创 2016-04-25 23:31:02 · 3795 阅读 · 0 评论 -
Leetcode #38. Count and Say 数数报数 解题报告
1 解题思想这道题就是按照每一位读一下数字,然手输出 比如123就是1个1,1个2,一个3,输出111213嗯,也就是先输出个数,然后输出元素做法就是扫描,统计了,统计连续相同的数字,毕竟Easy难度~~2 原题The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211,原创 2016-04-09 23:54:16 · 1702 阅读 · 0 评论 -
Leetcode #26. Remove Duplicates from Sorted Array 移除重复数字 解题报告
1 解题思想这道题因为是已经排好序的,所以比较简单,相当于设置两个指针,一个用来扫描,一个用来记录当前没有重复的部分的截断位置,当遇到一个全新的值的时候,就将其移动到截断位置那里就好,然后截断位置+1嗯,截断位置永远小于等于扫描的指针那个位置,且覆盖的时候必然不会影响到之前不重复的值2 原题26. Remove Duplicates from Sorted Array Given a sorted原创 2016-03-28 23:47:52 · 878 阅读 · 0 评论