随笔分类 -  Leetcode

leetcode随记
摘要:No.34, Search for a Range 后面的还是用java写吧。 这道题主要是找target在排好序的数组中的起始位置,例如5 7 7 8 8 10里面找8,结果为3,4,即从index=3到index=4都是8。题目要求O(logn),即二分。 这道题可以先找左起点,再找右终点,2l 阅读全文
posted @ 2016-04-21 21:51 上官筱儿 阅读(148) 评论(0) 推荐(0)
摘要:No.33,Search in Rotated Sorted Array 这道题最喜感的是,前一天刚做完,第二天某人的面试就遇到了。 这道题把一个排好序的数组截断,把前面的一段拼到后面的一段。例如0124567变成了4567012,在这样的数组中查找一个数的index。 既然局部有序,那么这道题肯定 阅读全文
posted @ 2016-04-21 20:23 上官筱儿 阅读(136) 评论(0) 推荐(0)
摘要:No.32 Longest Valid Parentheses 题目给出(和)组成的字符串,给出合法的最长的长度(即不违反()配对规则)。 这道题的解法为,从头到尾滤一遍,用栈的方式,先把配对情况整体给一遍,因为用栈的方式,一定会让配对的括号被标记出来,配对为1,不配对为0,最后找最长的连续1的个数 阅读全文
posted @ 2016-04-21 20:09 上官筱儿 阅读(143) 评论(0) 推荐(0)
摘要:No.31 Next Permutation 这道题主要是全排列问题,输出某一个数字序列的全排列的下一个情况,比如说1,2,3全排列的下一个是1,3,2。 全排列的顺序按字典序排列,比如123的全排列顺序为: 123 132 213 231 312 321 当然最笨的方法还是生成所有全排列然后找。 阅读全文
posted @ 2016-04-21 20:01 上官筱儿 阅读(200) 评论(0) 推荐(0)
摘要:No. 30, Substring with Concatenation of All Words 这个题其实一开始我都没明白什么意思。。。读了好几遍,发现是在s中找一个子串,这个子串里面包含words中的全部词,而且次数都跟words中一样,同时这个子串中不能含有其他多余的字符,输出符合要求的子串 阅读全文
posted @ 2016-03-09 16:22 上官筱儿 阅读(124) 评论(0) 推荐(0)
摘要:No.28, Implement strStr() No.29, Divide Two Integers 第一个题是找子串第一次出现的位置。 这个题最经典的算法当然是线性的KMP,先处理一下子串,拿到子串里面的关系,就不用每次比较都只前进一位了。 这里我就简单做了,从字符串的第一位开始遍历,将该位( 阅读全文
posted @ 2016-03-09 16:07 上官筱儿 阅读(145) 评论(0) 推荐(0)
摘要:No.26, Remove Duplicates from Sorted Array No.27, Remove Element 第一个题是给定一个已经排序的数组,去掉里面所有重复的数字,返回新长度。 这道题不用处理新长度之后的数组元素。那么只需要把不重复的往前面写即可,使用一个计数器看现在写到数组 阅读全文
posted @ 2016-03-09 14:05 上官筱儿 阅读(145) 评论(0) 推荐(0)
摘要:好几天没有继续了,最近压力好大,小小吐槽一下。为了恢复一些C/C++的能力,后面采用C++做了。(都被吐槽成重度java受害者了……TAT) No.24, Swap Nodes in Pairs No.25, Reverse Nodes in k-Group 第一个题是给定一个链表,每两个交换一下位 阅读全文
posted @ 2016-03-09 13:50 上官筱儿 阅读(124) 评论(0) 推荐(0)
摘要:No.21, Merge Two Sorted Lists No.23, Merge k Sorted Lists 第一个题是合并两个已经排序的链表,第二个题是合并k个已经排序的链表。 第一个题是第二个题的基础,代码只贴第二题的,其中包含了第一题的方法。 第一个题比较简单,每次取链表中未合并的部分中 阅读全文
posted @ 2016-03-02 16:39 上官筱儿 阅读(130) 评论(0) 推荐(0)
摘要:No.20, Valid Parentheses No.22, Generate Parentheses 第一个题目主要是判断给定的括号序列是否合法(即成对),这里括号包含(){}[]。第二个题是生成n对括号组成的合法的序列,这里括号只是()。 第一题括号配对,这里括号的规律是:如果碰到了右括号,就 阅读全文
posted @ 2016-03-02 16:17 上官筱儿 阅读(155) 评论(0) 推荐(0)
摘要:No.19, Remove Nth Node From End of List 输入为一个链表,需要删除第n个节点,返回删除后的链表。 最直白的方法,先循环一遍记录该链表有多长,计算出应该删除的节点的前一个节点n+1位置,再从头循环,到该节点位置后,改变该节点的next到下一个节点的next上。如果 阅读全文
posted @ 2016-02-29 19:32 上官筱儿 阅读(113) 评论(0) 推荐(0)
摘要:No.18, 4Sum 给定一个数字数组,找出所有四个数字加和等于target的组合。要求输出中不含重复的组合,以及组合中的数字按照从小到大升序排列。 前面做过2Sum,3Sum,这次是4Sum。其实KSum的都可以采用3Sum类似的方法来做,先把数组排序,再定死k-2个数字(即外面有k-2重循环) 阅读全文
posted @ 2016-02-29 19:07 上官筱儿 阅读(144) 评论(0) 推荐(0)
摘要:No.17, Letter Combinations of a Phone Numbers 根据输入的数字,输出所有可能的字母组合。例如输入“23”,输出["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"] 这里采用了简单的递归方式来做,也可以 阅读全文
posted @ 2016-02-29 18:52 上官筱儿 阅读(154) 评论(0) 推荐(0)
摘要:No.15, 3Sum No.16, 3Sum Closest 前一个题主要是算3个数字加和等于target的三个数字,可能有多组,输出全部可能性,数字可能重复。 后一个题主要是算3个数字加和离target最近的值,结果存在且唯一。 两个题目的解题思路基本一致,首先最暴力的方法当然是O(n3)三重循 阅读全文
posted @ 2016-02-26 21:17 上官筱儿 阅读(192) 评论(0) 推荐(0)
摘要:No.14,Longest Common Prefix 这道题的输入是一个字符串数组,从里面找出最长的公共前缀。 解题思路:从第一个字符串和第二个字符串开始找寻最长公共前缀,再将最长公共前缀和第三个字符串比较,以此类推,遍历全部字符串,找出最后的公共前缀。 优化点在于,最长公共前缀的长度一定小于等于 阅读全文
posted @ 2016-02-26 20:59 上官筱儿 阅读(126) 评论(0) 推荐(0)
摘要:No.12, Integer to Roman,将一个int数转换为罗马数字(范围为1-3999)。 No.13, Roman to Integer,将罗马数字转换为int(范围为1-3999)。 这题没什么难度,主要是理解罗马数字的规则。 在罗马数字中: 1~9: {"I", "II", "III 阅读全文
posted @ 2016-02-26 14:37 上官筱儿 阅读(209) 评论(0) 推荐(0)
摘要:No.11, Container With Most Water 这道题目在坐标轴中给出了若干平行于y轴的竖线,每两个搭配加上x轴组成一个盛水的容器,找出容量最大的容器。 最暴力的方法还是两重循环算,这不在我们讨论范围内。 这里采用贪心算法实现,在该题中有一个规律,如果说最终的结果是ij两个竖线组成 阅读全文
posted @ 2016-02-26 14:32 上官筱儿 阅读(113) 评论(0) 推荐(0)
摘要:因为leetcode的题号会变动,所以先记录一下每一题对应的内容。 10 Regular Expression Matching 21.6% Hard 9 Palindrome Number 30.9% Easy 8 String to Integer (atoi) 13.3% Easy 7 Rev 阅读全文
posted @ 2016-02-25 21:58 上官筱儿 阅读(1363) 评论(0) 推荐(0)