
LeedCode
小菜鸟要高飞
这个作者很懒,什么都没留下…
展开
-
LeetCode 之 Generate Parentheses
题目链接:Generate Parentheses给定n对括号,编写一个函数来生成格式正确的括号的所有组合。例如,给定n = 3,解集是:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]参考https://www.cnblogs.com/springfor/p/3886559.html...原创 2018-07-21 20:49:47 · 339 阅读 · 0 评论 -
LeetCode 之 Search for a Range
题目链接:Search for a Range 对于一个按照升序排序的整数数组,找到给定目标值的开始位置和结束位置,且时间复杂度为O(log n)。 如果在数组中找不到目标值,则返回[-1,-1]。例如: 数组为[5,7,7,8,8,10]和目标值8; 返回[3,4]。首先如果使用暴力查找,算法的时间复杂度绝对会超过O(log n),所以不予考虑。 解法一:使用双指针,i指向数...原创 2017-11-13 20:35:05 · 303 阅读 · 0 评论 -
LeetCode 之 Divide Two Integers
题目链接:Divide Two Integers 就是在不使用乘法,除法和取模运算的基础上进行除法运算。解法一:最基础的方法是使用被除数-除数指导得到的结果小于除数为止。解法二:运用了移位运算,每次左移一位相当于乘以2; 参考了http://blog.youkuaiyun.com/yuqieshidi/article/details/48829465 例如28 = 3×9 = 3×(8+1) = 3×(2原创 2017-11-12 20:53:54 · 273 阅读 · 0 评论 -
LeetCode 之 Remove Nth Node From End of List
题目链接:Remove Nth Node From End of List 这道题的意思是从链表的尾部开始查找,删除第n个节点。 最普通的方法就是遍历两次,第一次遍历计算出链表的长度为len,那么倒数第n个节点,即为正数第len-n+1个,第二次遍历删除对应节点即可。 本以为这样的做法不过AC,但是竟然通过了。解法一:/** * Definition for singly-linked li原创 2017-11-12 19:20:01 · 263 阅读 · 0 评论 -
LeetCode 之 Container With Most Water
题目链接:Container With Most Water题意是给定n个非负整数a1, a2, a3, … ,an, 其中(i, a i)代表坐标上的一个点,过这个点向x轴作垂线,和x轴的交点为(i,0)。 需要找到两条线,其与x轴形成一个容器,使得容器包含最多的水,并返回容器的容量。 即找到ai,aj(iclass Solution { public int maxArea(int[原创 2017-11-12 17:37:25 · 221 阅读 · 0 评论 -
LeetCode 之 ZigZag Conversion
题目链接:ZigZag Conversion 题意是将字符串在一个给定数量的行上写成一个Z字形图案,并逐行读出来,比如: 字符串”PAYPALISHIRING”写成如下Z字形: 然后逐行读取为:”PAHNAPLSIIGYIR”。 这道题目就可以根据排列的形式,查找转换后对应位置上字母的规律。 根据对应位置规律,依次读出。 其中需要处理的特殊情况有: 1、当numRows==1时,转原创 2017-11-12 17:23:30 · 277 阅读 · 0 评论 -
LeetCode 之 Single Number
题目链接:Single Number 思路:将数组排序,然后进行两两比较即可 代码如下:class Solution { public int singleNumber(int[] nums) { int len = nums.length; if(len==0) return 0; if(len==1)原创 2017-11-02 20:09:11 · 388 阅读 · 0 评论 -
LeetCode 之 Path Sum
题目链接:Path Sum 给定一个数sum,查看二叉树是否具有从根到叶子节点上路径的值得和等于sum; 需要考虑三种情况: 1、树为空,直接返回false; 2、只有根节点,判断根节点的值是否为sum; 3、存在子树,判断左右子树上是否存在值为sum-root.val的路径。/** * Definition for a binary tree node. * public class原创 2017-11-02 19:33:41 · 369 阅读 · 0 评论 -
LeetCode 之 Maximum Depth of Binary Tree
题目链接:Maximum Depth of Binary Tree 题意很简单,计算给定二叉树的深度。 那么二叉树的深度就可以通过左右子树来计算,显然,其为1+左右子树中大的深度值。 那么通过使用递归可以很简单的实现。 代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int va原创 2017-10-29 17:07:05 · 315 阅读 · 0 评论 -
LeetCode 之 Median of Two Sorted Arrays
题目链接:Median of Two Sorted Arrays 这道题目就是寻找两个排序后的数组的中位数,两个数组的长度分别为m和n,那么若m+n为偶数的话,则中位数为第(m+n)/2和第(m+n)/2+1个数,为奇数的话,就是第(m+n)/2个数 这道题就可以考虑为如何寻找第K个数的问题。 设置指针i和j分别指向两个数组中的元素,依次遍历对比数值的大小,且设置k,寻找第第(m+n)/2和第原创 2017-11-11 20:43:44 · 306 阅读 · 0 评论 -
LeetCode 之 Valid Palindrome
题目链接: Valid Palindrome 判断字符串是否回文,且只考虑数字、字母,并忽略大小写。 就想将字符串中的非数字和字母的元素去掉,将大写字母转为小写,java中String直接提供了这两种方法:replaceAll()和toLowerCase(); 然后将新的字符串反转,判断反转前后是否相同即可 代码:class Solution { public boolean isP原创 2017-11-01 20:54:40 · 374 阅读 · 0 评论 -
LeetCode 之 Longest Substring Without Repeating Characters
题目链接:Longest Substring Without Repeating Characters 这道题就是从字符串中选择出多长的无重复元素的子字符串 首先可以使用暴力搜索的方式,使用双重循环找出所有的子字符串,但是会出现超时。 于是,参照方法https://leetcode.com/articles/longest-substring-without-repeating-charact原创 2017-11-09 11:42:34 · 254 阅读 · 0 评论 -
LeetCode 之 Linked List Cycle
题目链接:Linked List Cycle 判断一个链表是否为单链表,就很容易,向前遍历直到null,就说明为单链表; 但是如果存在环,应该怎么办,并且要求不能有额外的空间,自己没想到合适的方法,搜索学习了下,通过使用快慢指针来,设置两个LinkNode,一个为slower,一个为faster,两个节点都从头节点开始向前,slower每次走一步,faster每次走两步,那么如果存在环的话,两者原创 2017-11-03 19:59:28 · 332 阅读 · 0 评论 -
LeetCode 之 Linked List Cycle II
题目链接:Linked List Cycle II 此解法参考http://www.cnblogs.com/hiddenfox/p/3408931.html首先看图片 链表中Y点为环的起点,faster每次向前走两步,slower每次向前走一步,两者第一次在Z点相遇,此时faster走的距离为a+b+c+b,slower走的距离为a+b,所以存在: (a+b)*2 = a+b+c+b,由此得到原创 2017-11-03 21:03:56 · 288 阅读 · 0 评论 -
LeetCode 数组中重复数字
在LeetCode中有四道查找数组中重复数字的类似的题目,先总结一波: LeetCode 217:Contains Duplicate LeetCode 219:Contains Duplicate II LeetCode 220:Contains Duplicate III LeetCode 287:Find the Duplicate Number一. Contains Dup...原创 2018-05-17 22:20:47 · 4247 阅读 · 0 评论 -
LeetCode 之 3sum
题目链接:3sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not ...原创 2018-03-22 12:14:35 · 231 阅读 · 0 评论 -
LeetCode 之 Search in Rotated Sorted Array II
题目链接:Search in Rotated Sorted Array IISuppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Write a funct...原创 2018-03-24 12:16:41 · 239 阅读 · 1 评论 -
LeetCode 之 Search in Rotated Sorted Array
题目链接:Search in Rotated Sorted ArraySuppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a ...原创 2018-03-24 11:32:46 · 257 阅读 · 0 评论 -
LeetCode 之 4Sum
题目链接:4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The s...原创 2018-03-22 15:30:10 · 251 阅读 · 0 评论 -
LeetCode 之 3Sum Closest
题目链接:3Sum ClosestGiven 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...原创 2018-03-22 14:46:20 · 230 阅读 · 0 评论 -
LeetCode 之 First Missing Positive
题目链接 First Missing Positive这道题目看了好一会都没看懂,后来才终于明白题意了。 在一个乱序的整数数组中找到第一个缺失的正整数,例如:在数组[1,2,0]中,从1开始数,有1,2,但是缺少3,所以返回3;在数组[3,4,-1,1]中,从1开始数,有1,3,4,但是没有2,所以返回2。这道题要求算法的时间复杂度为O(n),且额外空间为常数。解题思路:首先在nums[i]上放置原创 2017-11-16 20:39:06 · 258 阅读 · 0 评论 -
LeetCode 之 Balanced Binary Tree
题目链接Balanced Binary Tree 判断一个二叉树是否为平衡二叉树 平衡二叉树的定义为:每个节点的两个子树的深度相差不会超过1,即根节点的两个子树的深度相差不超过1,且两个子树也都是平衡二叉树。 那么使用递归的思想,先判断两个子树的深度差,再使用递归算法判断两个子树是否为平衡的 代码如下:/** * Definition for a binary tree node. *原创 2017-11-05 19:28:46 · 215 阅读 · 0 评论 -
LeetCode 之 Implement strStr()
题目链接:Implement strStr() 这道题就是在字符串中找到子字符串,并返回子字符串的位置。 直观的方法,就是通过遍历对比,每次比较的长度为子字符串的长度。 代码如下:class Solution { public int strStr(String haystack, String needle) { int len = haystack.length()原创 2017-11-05 19:23:40 · 274 阅读 · 0 评论 -
LeetCode 之 Rotate Image
题目链接:Rotate Image将一个代表图像的n × n矩阵,顺时针旋转90度,并且只能原地旋转,不能分配多余的矩阵。 例如: 解法一: (1)将矩阵沿着主对角线反转 (2)沿Y轴方向左右反转 代码如下所示:class Solution { public void rotate(int[][] matrix) { int n = matrix.length;原创 2017-11-14 20:50:31 · 265 阅读 · 0 评论 -
LeetCode 之 Pascal's Triangle II
题目链接:Pascal’s Triangle II 这道题和Pascal’s Triangle很像,只是输出其中一行 那想到肯定是如果可以只是表示出一行的数据,而不是像Pascal’s Triangle根据前面一行的数据和计算后面的,就很容易解出来,那么根据第n行的第m个数据为C(n-1,m-1)组合数。 代码如下:class Solution { public List<Intege原创 2017-10-31 21:02:53 · 241 阅读 · 0 评论 -
LeetCode 之 String to Integer (atoi)
题目链接:String to Integer (atoi) 这道题目的关键的地方是要考虑到很多中不同的情况。 1、去除字符串前的空格; 2、除空格以外的第一个字符需要是+/-或者有效的数字0-9,; 3、如果第一个字符为+/-,其后紧接着的必须为有效数字直到遇到非数字即可; 4、如果第一个字符不为运算符或者紧接着运算符的不是有效的数字,则转换无效,返回0; 5、如果第一个字符为“-”,则原创 2017-11-09 09:40:57 · 288 阅读 · 0 评论 -
LeedCode 之 Palindrome Number
题目链接:Palindrome Number 这道题目是判断一个整数是不是回文数,并且不能花费多余的空间。 回文数即正着和倒着是一样的~ 刚刚做过Reverse Integer反转数问题,那么就判断反转前后的数是否一样不就可以了嘛~ 直接在反转数的上稍微修改了下,并且可以说更简单了,因为负数不是回文数(0是回文数),省去了判断符号和取绝对值的步骤。 代码如下:public class So原创 2017-04-23 17:42:22 · 277 阅读 · 0 评论 -
LeedCode 之 Remove Element
写在前面:从4月初就和小伙伴商量五一出游事件,虽然最后因为没抢到车票,没去成原本计划好的爬上活动,还是聚在一起爬了一座小山,去了动物园,吃了朋友亲自做的饭,总之这三天很累,但是超级开心的~ 现在回归学习生活了,加油!!! 5月,希望一切都好~照旧的题目链接:Remove Element 这道题和前面LeedCode 之 Remove Duplicates from Sorted Array的基原创 2017-05-02 10:00:46 · 296 阅读 · 0 评论 -
LeedCode 之 Length of Last Word
题目链接:Length of Last Word 这道题就相当的简单的,主要是对特殊字符串的处理,而且题目中说“If the last word does not exist, return 0.”我就一直以为当最后一个字符是“ ”,就表示要return0,实际不是这样的。其需要返回的是最后一个单词的长度,除非整个字符串中没有一个单词。 直接上代码就行:public class Solution原创 2017-05-06 12:22:27 · 309 阅读 · 0 评论 -
LeedCode 之 Count and Say
写在前面:前两天有些事情耽误了,没能每天一天,昨天晚上这道题目在实验室的电脑上写完了的,但是好像忘记保存了还是怎么的,就没能留下来,无奈今天又实现了遍,正好检验下是否只能能够完成这道题~题目链接:Count and Say 这道题目看了半天也不知道应该怎么处理,按道理应该是n取不同值的时候,数字序列存在不同的规律,但是始终没发现是什么规律,只得在网上查看了下其他的想法的解法。题意是n=1时输出字符原创 2017-05-06 11:30:23 · 270 阅读 · 0 评论 -
LeedCode 之 Merge Sorted Array
题目链接:Merge Sorted Array 题意很简单,合并两个已经排序数组,但是将nums2添加到nums1中。 之前也做过类似的题,不过之前合并的是列表,这道题是数组。 如果只是简单的合并两个已经排序的数组的话,其实可以使用相同的方法,依次循环两个数组,将小的加入到新增的数组中,但是这道题不能使用新的内存空间。 设置指针依次指向nums1中的值和nums2中值的进行比较,如果原创 2017-05-14 17:32:09 · 280 阅读 · 0 评论 -
LeedCode 之 Reverse Integer
目前先是挑选LeedCode上简单的题目来做~题目链接:Reverse Integer看到题目第一想法是:将整数转换为字符串,再使用字符串的反转函数reverse()函数将其反转,最后转为整数输出即可~ 在这其中考虑到有负数的情况,所以先去绝对值进行反转处理,最后根据整数的正负情况返回对应的值~ 代码如下:public class ReverseInteger { public int原创 2017-04-23 15:28:52 · 373 阅读 · 0 评论 -
LeedCode 之 Remove Duplicates from Sorted List
题目链接:Remove Duplicates from Sorted List 很直接写过的题有点类似,直接上代码。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; }原创 2017-05-12 20:16:10 · 268 阅读 · 0 评论 -
LeedCode 之 AddBinary
题目链接:AddBinary 这道题就是二进制数相加,但是是以字符串的形式,需要注意的就是,在而字符串和二进制数的位存储是相反的,字符串的0位存储的是二进制数的最高位。 代码:public class Solution { public String addBinary(String a, String b) { int lena = a.length();原创 2017-05-12 18:54:13 · 275 阅读 · 0 评论 -
LeedCode 之 SameTree
题目链接:SameCode 这道题就是比较两个tree是否相同,要求树节点的值相同,左右子树相同,那么可以直接使用递归。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre原创 2017-05-23 11:09:03 · 344 阅读 · 0 评论 -
LeedCode 之 Merge Two Sorted Lists
题目链接:Merge Two Sorted Lists 仔细读题目并理解题意!!!!!!! 这道题是要Merge two sorted linked lists,重点是sorted,将已经排好序的列表合并,那么合并后的列表自然也是排好序的。 刚开始没注意到排序问题,一直不知道问题出现在哪里,后来发现是这么弱智的问题,简直有毒啊啊啊啊啊 思路:通过比较l1和l2值得大小,将小的值加入到l3,并原创 2017-05-10 22:23:55 · 327 阅读 · 0 评论 -
LeedCode 之 Add Two Numbers
题目链接:Add Two Numbers 给了两个非空的链表存储两个整数,每个链表节点代表一位数字,并以相反的顺序存储。 Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 即表示:432+465 = 807定义单链表: //Definition for singly-linked list. public class原创 2017-05-10 19:34:55 · 420 阅读 · 0 评论 -
LeetCode 之 Roman to Integer
写在前面:本来这道题目应该昨天完成的,晚上7点多看了会小说浪费了一些时间,晚上又急着回去跳(jian)绳(fei),就没能完成。今天要来办公室值班,一大早来了就想着先把昨天遗留的这道题做了。题目链接:Roman to Integer 首先百度了下由罗马数字转换为整数的规则到底什么? 因此思路: 1、将字符串转为字符数组stringArr 2、根据罗马数字基本字符和阿拉伯数字之间的对应关系,使原创 2017-04-25 09:34:42 · 287 阅读 · 0 评论 -
LeedCode 之 Plus One
题目链接:Plus One 这道题属于简单,但是不知道是英语差还是怎么得,我没看懂题目,搜了下其他人对这个题目的理解,才发现原来如此,挺简单的~ 题意:使用数组来记录一个整数,设置数组digits,如整数98,那么digits[0]=9,digits[1]=8;加1以后,依次进位,如果超过原数组的长度,那么就新建一个数组,将原数组复制到新数组,并设置最高位为1。 代码:public class原创 2017-05-09 09:33:14 · 393 阅读 · 0 评论 -
LeedCode 之 Valid Parentheses
题目链接:Valid Parentheses 这又是一道很常见的题目,使用栈是最常见的解法,因为对在java中使用栈不够熟悉,参考了一下网上代码的编写 基本思路如下: 1、首先判断字符串的长度,如果为奇数个,那么肯定不是合格的括号字符串 2、如果为偶数个,则判断第一个括号是否为左半边的:’(‘,’[’ 或者 ‘{‘,如果是则将其压入栈,不是的话,直接返回false 2、接下来依次依次读取字原创 2017-04-26 21:09:54 · 339 阅读 · 0 评论