
leetcode
文章平均质量分 53
mmlfs
这个作者很懒,什么都没留下…
展开
-
leetcode: Reverse Integer
同样比较简单和基础,练练手吧。 考虑有时间把之前刷过的几道也记录一下吧public class Solution { public int reverse(int x) { boolean posi = true; if( x < 0 ) { posi = false; x = 0-x;原创 2014-03-11 11:22:15 · 283 阅读 · 0 评论 -
leetcode: Add Two Numbers
很简单的一道链表题,注意边界条件,顺着做即可/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next原创 2014-03-10 19:29:20 · 307 阅读 · 0 评论 -
leetcode: ZigZag Conversion
不怎么需要动脑子的一道题,题目很简单,但是要注意边界条件。 根据zigzag点的分布特点可以得到每一行点坐标的递推公式,循环即可。public class Solution { public String convert(String s, int nRows) { String res = ""; if( nRows == 1 ) {原创 2014-03-11 11:10:57 · 347 阅读 · 0 评论 -
leetcode: String to Integer (atoi)
也没什么算法的一道题,但是需要考虑的情况很多。 大体需要忽略数字前的所有空格,需要判断正负,还有就是遇到非法字符表示数字结束。但是最主要没考虑到的边界就是数字的大小,最初拿int做,发现测试样例大于MAX_INT。与其针对于这个边界做各种判断,最简单的办法就是使用long类型,需要考虑的边界就少很多。为了避免可能输入的数字还是大于long的范围,需要做一些限制即可。public class原创 2014-03-11 12:19:47 · 310 阅读 · 0 评论 -
leetcode: Container With Most Water
从两头开始向中间收拢,记录一个最大值。 由于初始的宽度最大,要想在收拢过程中取得更大的面积,要求收拢的边的高度高于原高度。 由于容器的高度由最短边决定,每次从短的那边开始收拢class Solution {public: int maxArea(vector &height) { int Max=0; int len = height.size();原创 2014-03-12 17:17:36 · 308 阅读 · 0 评论 -
leetcode: Regular Expression Matching
借鉴了网上的答案,觉得这个解法的思维比较清晰,比较容易理解。 大致就是递归判断当前pattern的第二个字符是否是*,不是的话比较当前s和p的第一个字符是否相同。若是*的话,则要考虑两种情况,1.s在匹配p的第一个字符时s++ 2.考虑当前的s和p+2的匹配情况。 class Solution {public: bool isMatch(const char *s, const原创 2014-03-12 17:03:20 · 217 阅读 · 0 评论 -
leetcode: Palindrome Number
回文数,要注意的是负数肯定不是回文数,需要先判断。 做法有很多,为了图方便我是直接得到输入数字颠倒过来的数字,然后比较看是否相等。其实,也可以先算出x有几位,然后每次判断头尾是否相同,相同则掐头去尾继续循环,否则返回falsepublic class Solution { public boolean isPalindrome(int x) { int res=0,x原创 2014-03-12 16:37:45 · 212 阅读 · 0 评论 -
leetcode: Longest Common Prefix
由于求的是最长公共前缀,不妨找到最短的字符串开始枚举其每一个字符,直到有字符和其他字符串该位置字符不同时break,输出即可public class Solution { public String longestCommonPrefix(String[] strs) { if( strs == null || strs.length == 0 ) {原创 2014-03-16 12:16:41 · 318 阅读 · 0 评论 -
leetcode:Pow(x, n)
使用的还是很简单的做法,根据n的奇偶二分来做,效率是O(logn)的,要注意的是要判断n的正负,尤其是测试集中出现了n为INT_MIN的情况,要单独处理class Solution {public: double pow(double x, int n) { if( n == 0 ) { return 1.0;原创 2014-03-16 11:53:55 · 286 阅读 · 0 评论 -
leetcode: 3Sum Closest
和3Sum这题思路一样。同样的搜索方式,也是首先要排序。需要我们维护当前的最近距离并记录最近距离时的和,返回即可。 代码是在上一题上修改的class Solution {public: int threeSumClosest(vector &num, int target) { sort( num.begin(),num.end() ); int M原创 2014-03-17 20:37:17 · 315 阅读 · 0 评论 -
leetcode: 3Sum
首先需要将输入数组排序,大致思路就是i从数组头至尾循环一遍,循环内部求两数之和为-num[i]即可。需要注意的是为了避免出现重复结果,那么当当前数和取得上一个数相同的时候要跳过(注意边界)。在while循环中由于j和k的值会发生变化,也要及时判断是否达到了跳出条件。class Solution {public: vector > threeSum(vector &num) {原创 2014-03-17 20:21:26 · 257 阅读 · 0 评论 -
leetcode: Pascal's Triangle II
只用O(n)的空间输出第n行。 考虑到第i行的第j个元素的值由第i-1行的原创 2014-04-29 12:12:31 · 255 阅读 · 0 评论 -
leetcode: Search for a Range
由于输入是有序的数组,因而仍旧可以使用二分原创 2014-04-30 11:48:00 · 233 阅读 · 0 评论 -
leetcode: Validate Binary Search Tree
检查BST是否正确。需要注意的是不能只判断每一组左子结点和you'zi'jie原创 2014-04-14 16:07:32 · 206 阅读 · 0 评论 -
leetcode: Triangle
最基础的一道动态规划题。 我用了二维数组记录了到每个点的最短距离。如果光按照题目要求求最后一排的最短距离的话,用一维数组动态更新每一排的状态即可。class Solution {public: int minimumTotal(vector > &triangle) { int num = triangle.size(); int res[99原创 2014-03-29 10:48:02 · 622 阅读 · 0 评论 -
leetcode: Valid Parentheses
使用栈来维护前括号的序列,遇到每一个后括号判断对应的前括号是否正确。class Solution {public: bool isValid(string s) { stack order; for( int i=0;i<s.size();i++ ) { if( s[i] == '(' || s[i] == '{原创 2014-03-30 12:19:37 · 356 阅读 · 0 评论 -
leetcode: Merge Two Sorted Lists
两个有序链表的插入,类似于归并。两个指针代表两个有序链表,逐个比较将结果插入返回的链表即可/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *原创 2014-03-29 10:31:35 · 279 阅读 · 0 评论 -
leetcode: Binary Tree Zigzag Level Order Traversal
题目要求逐层的扫描二叉树,并且每一层原创 2014-04-16 10:44:35 · 213 阅读 · 0 评论 -
leetcode: Sum Root to Leaf Numbers
直接遍历所有路径将结果加起来即可,没有想到跟好的做法原创 2014-05-01 10:44:49 · 255 阅读 · 0 评论 -
leetcode:Edit Distance
比较经典的动态规划。 tmp[i][]原创 2014-05-02 13:07:40 · 328 阅读 · 0 评论 -
leetcode: Maximum Subarray
基本的动态规划问题。 随便写了些,代码不够简洁,效率还可以降低class Solution {public: int maxSubArray(int A[], int n) { int res[99999]; int rt=-9999999; for( int i=0;i<n;i++ ) {原创 2014-03-31 15:27:47 · 223 阅读 · 0 评论 -
leetcode: Construct Binary Tree from Inorder and Postorder Traversal
根据中序和后序序列来建立二叉树。这里要利用这两种序列的两个特点:1. 后序序列永远在最后访问根节点2. 中序序列中根节点分隔左右子树的节点,而这两个左右子节点集合在后序序列中是不交叉的连续出现根据这两个特点我们可以得到当前节点序列的根节点位置以及左右子节点集合。递归查找左右子节点来建立左子树和右子树完成二叉树的建立。/** * Definition for binary原创 2014-04-01 16:05:34 · 476 阅读 · 0 评论 -
leetcode: Distinct Subsequences
题意要求我们找到S到T的原创 2014-05-04 11:25:47 · 307 阅读 · 0 评论 -
leetcode: Climbing Stairs
很基础的一道题,每一步有两种选择,上原创 2014-04-17 11:37:26 · 233 阅读 · 0 评论 -
leetcode: Same Tree
判断两棵树是否相同,除了结构还要比较每个节点的值。 我才用的做法还是原创 2014-05-03 15:41:53 · 271 阅读 · 0 评论 -
leetcode: Recover Binary Search Tree
题目的意思是二分查找树中有两个点的位置出现错误,找到并调整过来。 对于BST,很重要的特征就是中序遍历是从小到大排列的。 那么中序遍历一遍BST,找到小于前一节点的节点即为出错的位置。但是有两种可能的出错方式:1. 左子结点大于根节点小于右子结点或根节点大于右子结点大于左子结点。 这种情况下找到的当前节点和前一节点就是出错的两个节点2. 左子结点大于根节点大于右子结点。这时需要交原创 2014-04-02 12:25:06 · 309 阅读 · 0 评论 -
leetcode: First Missing Positive
这道题和之前做过的在O(n)时间查找长度为n的原创 2014-04-18 11:16:59 · 199 阅读 · 0 评论 -
leetcode: Palindrome Partitioning
采用深搜回溯的方式判断s的所有回文子串。 在回文时继续向下搜索,当s被搜索完即找到一组解加入结果列表中。public class Solution { ArrayList> res = new ArrayList>(); public ArrayList> partition(String s) { ArrayList per = new A原创 2014-04-03 11:07:57 · 289 阅读 · 0 评论 -
leetcode: Merge k Sorted Lists
从基础的两个有序链表变成了k个,我们设原创 2014-04-19 10:25:57 · 253 阅读 · 0 评论 -
leetcode: Substring with Concatenation of All Words
由于L中的词长度都一样,大大方便了我们每次的循环判断。原创 2014-05-05 14:53:44 · 370 阅读 · 0 评论 -
leetcode: Divide Two Integers
解决办法自然是利用加法求解。但是不能每次都加除数,这样代价太高,hui'chao'shi原创 2014-04-04 10:57:13 · 350 阅读 · 0 评论 -
leetcode: Count and Say
题目是让我们求一个序列中的第n个,我们按照规律递推过去就可以。主要就是判断当前字符和前一个字符是否相同。需要注意的是int和char加入String时的格式public class Solution { public String countAndSay(int n) { String in = "1"; String res = "";原创 2014-03-25 14:53:54 · 229 阅读 · 0 评论 -
leetcode: Word Break
这种类型的题目,由于我们需要判断各种原创 2014-04-21 10:27:53 · 238 阅读 · 0 评论 -
leetcode: Simplify Path
题意是要我们处理好输入路径的跳转,既要考虑..和.原创 2014-04-20 13:40:02 · 219 阅读 · 0 评论 -
leetcode: Minimum Window Substring
还是使用两个指针扫描字符串S,两个数组标示T。 后一个指针ed原创 2014-04-05 12:41:58 · 242 阅读 · 0 评论 -
leetcode: Largest Rectangle in Histogram
很棒的一道题,比囧啊好的原创 2014-05-06 14:59:52 · 313 阅读 · 0 评论 -
leetcode: Combinations
dfs搜索判断。没什么好说的。 第一次做的时候dfs是原创 2014-05-07 10:40:57 · 249 阅读 · 0 评论 -
leertcode: Minimum Depth of Binary Tree
求二叉树的最短路径。原创 2014-04-06 12:30:45 · 275 阅读 · 0 评论 -
leetcode: Remove Element
很简单的一道题。但是题目不光要求返回移除elem之后的数组长度,还要求数组也要剔除干净原创 2014-04-08 13:09:06 · 249 阅读 · 0 评论 -
leetcode: Linked List Cycle
判断链表是否成环,还不能shi'yong原创 2014-04-07 10:49:45 · 218 阅读 · 0 评论