LeetCode
AsceticW
这个作者很懒,什么都没留下…
展开
-
【LeetCode】15 三数之和3Sum
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]弯路:1 最先想到的应...原创 2018-10-28 17:04:17 · 153 阅读 · 0 评论 -
【LeetCode】 2 两数相加
解题思路:1 每个节点相加的结果需要一个进位flag,注意置空。2 以前的思路是当某个链表加完之后,再在结果上接上另一个链表即可,但是此题存在连续进位问题。3 所以让指到结尾的链表指针(为null)陪跑即可,即如果null则加0,这样可以保持程序的一致性。代码:class Solution { public ListNode addTwoNumbers(ListNode l1...原创 2018-11-29 13:19:50 · 124 阅读 · 0 评论 -
【LeetCode】 12 整数转罗马数字
解题思路:1 思路很简单,就是检测是否大于某个模板值(如1000,900),如果大于某模板值则减去此值,再在字符串中加入相应符号。2 此题问题主要是如何循环。最复杂的办法是将每个值分别检测,写一堆while;但是可以使用静态数组,将其模板字符和数字存放起来,就可以使用大循环套小循环的简洁编写方法了。代码:class Solution { static String[] roma...原创 2018-11-29 13:26:50 · 322 阅读 · 2 评论 -
【LeetCode】 13 罗马数字转整数
解题思路:1 很明显,有两种字符形式:一个字母和两个字母,可以进行分别讨论。2 对两种分别建字典,分别处理。3 这种方法思路较清晰,但是较慢;较快的思路是对字符串连续读,如果右边字母表示的数字比左边的大,则在结果中减去此值,代码就不贴了。代码:class Solution { final static String[] ROMAN = {"M", "D", "C", "L",...原创 2018-12-03 19:50:08 · 181 阅读 · 0 评论 -
【LeetCode】 22 有效括号
解题思路:1 最朴素的想法是:对每种可能出现的序列情况排列组合,将最后不符合条件的情况剔除。2 回溯法:和上方的思路差不多,但是只要在组建字符串的过程中,出现了不符合要求的情况,直接将其丢弃。3 所有序列可以被看成是一个二叉树,根节点是空字符串,左孩子加左括号,右孩子加右括号。每个结果都对应了树里的一个从根到节点的序列。对每个节点进行丢弃分析,需要我们把字符串形成过程中每加一个左/右括号...原创 2018-12-03 21:01:49 · 110 阅读 · 0 评论 -
【LeetCode】 23 合并k个有序链表
解题思路:1 之前的某道题有将两个有序链表排序的解法,思路很简单,可以拿来直接用。2 利用分治的思想,分根据下标来分;两两合并,再两两合并…以此类推。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Li...原创 2018-12-03 22:20:27 · 313 阅读 · 0 评论 -
【LeetCode】 24 两两交换链表中的节点
解题思路:1 重点:如何在交换完了之后,获得进行交换动作的两个节点的前驱节点;思路和反转链表类似,维护一个前驱节点即可。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { ...原创 2018-12-03 22:24:20 · 127 阅读 · 0 评论 -
【LeetCode】 27 移除元素
解题思路:1 最直接的,对数组内等于val的值进行处理,令其后的元素依次覆盖它,直到数组尾。2 反向思维,反正都要遍历一遍数组,直接将不等于val的元素覆盖掉数组内的元素,并记录长度值即可。代码(直接):class Solution { public int removeElement(int[] nums, int val) { int length = nu...原创 2018-12-04 09:19:29 · 121 阅读 · 0 评论 -
【LeetCode】 77 组合
解题思路:1 此题和LeetCode 22 有效括号思路很像,都是对所有可能的情况全排列,然后去除不符合要求的结果,即使用回溯法。2 比较难的点是,如何设置递归条件和回溯丢弃条件。递归条件较好理解,对每一个正在构建的数组,如果当前长度和k相等,那么就可以加入最后结果集中;回溯丢弃条件则是,检测(当前数组长度)与(剩余元素)之和 与结果长度k之间的大小,也就是说,在理论上当前操作的数组能...原创 2018-12-14 11:07:42 · 112 阅读 · 0 评论 -
【LeetCode】 67 二进制求和
解题思路:1 这个也是两个表经过操作合成一个表的题目,最大的问题就是两表长度不一致。可以每次都把两个表放进for循环,如果长度短的表没有可以操作的内容,就用条件语句将它跳过。 这样代码相对简洁2 每次运算的结果有0、1、2和3四种情况。其中,0和2需要在结果前加一个“0”、1和3需要加一个“1”;2和3需要进位,0和1不需要进位。代码:class Solution { publ...原创 2018-12-10 11:27:27 · 151 阅读 · 0 评论 -
【LeetCode】 两数之和与二进制求和——列表归并操作通用解法
啊原创 2018-12-10 11:38:56 · 190 阅读 · 0 评论 -
【LeetCode】 127 单词接龙
解题思路:1 这道题要找一个最短路径,可以联想到图的相关算法(虽然我当时没想到…),那么是不是应该使用最短路径的相关算法呢。其实不用…因为这个图里每条边的长度都是1,用一个广度优先算法就搞定了。2 规模的问题,如果你遍历List里的每个单词的话,你会发现一直超时,因为有的List的规模给到了上千,每次查找图中的相邻节点都会是一个O(n)。解决办法是对规模很大的List,给每个当前操作单词建...原创 2018-11-25 21:28:12 · 323 阅读 · 0 评论 -
【LeetCode】 125 验证回文串
解题思路:1 哦 看呐,这是我们的老朋友双指针,3Sum这道题也是用这个来做的。设定两个指针从前后分别向中间遍历,验证遇到的对应位置的字符是不是相等。2 需要注意:统一大小写的时候别用Character的API toUpperCase,耗时较多,直接x-=32即可;同时注意不可以x = x - 32,会报类型转换错误;代码:class Solution { public boo...原创 2018-11-25 21:05:08 · 157 阅读 · 0 评论 -
【LeetCode】 98 验证二叉搜索树
解题思路:1 二叉搜索树和中序遍历有着密不可分的关系,中序遍历的结果是所有树中的节点从左到右的排列。如上图示例2中的树 中序遍历结果应是153462 基于1,我们易知,如果中序遍历的结果是升序排列的,那么此树符合二叉搜索树的要求,所以可以用中序遍历并检测检测结果的升序情况来做。3 更快速的算法是:通过定义来做,对每个节点设置一个最大值和最小值,判断完了之后将左右子树分别递归调用此方法。...原创 2018-11-25 20:48:35 · 120 阅读 · 0 评论 -
【LeetCode】20 Valid Parentheses 有效括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1:输入: “()” 输出: true示例 2:输入: “()[]{}” 输出: true示例 3:输入: “(]” 输出: false示例 4:输入: “([...原创 2018-10-28 21:11:28 · 76 阅读 · 0 评论 -
【LeetCode】01 Two Sum与HashMap
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]解法1:暴力求解class Solution { public int[] twoSum...原创 2018-10-23 22:46:10 · 164 阅读 · 0 评论 -
【LeetCode】08 String to Integer (atoi)
实现 atoi,将字符串转为整数。该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中...原创 2018-10-24 20:21:13 · 87 阅读 · 0 评论 -
【LeetCode】28 实现strSTR()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll” 输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bb...原创 2018-11-01 15:34:43 · 71 阅读 · 0 评论 -
【LeetCode】21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:1 先根据两个链表的第一个节点判断并建立result的头结点。2 对两个链表同时遍历,判断两个链表的当前元素的大小,将小的接在result后面,...原创 2018-11-01 15:47:22 · 106 阅读 · 0 评论 -
【LeetCode】56 合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间[1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。解题思路...原创 2018-11-12 09:56:28 · 100 阅读 · 0 评论 -
【LeetCode】65 有效数字
验证给定的字符串是否为数字。例如:“0” => true" 0.1 " => true“abc” => false“1 a” => false“2e10” => true说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。解题思路:这道题的情况十分复杂,需要自己一个一个尝试某个形式算不算数字,也正因此,这道题斩获...原创 2018-11-20 14:59:26 · 359 阅读 · 0 评论 -
【LeetCode】70 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶解...原创 2018-11-20 15:11:35 · 81 阅读 · 0 评论 -
【LeetCode】 73 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1] ]输出: [ [1,0,1], [0,0,0], [1,0,1] ]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ]输出: [ ...原创 2018-11-20 15:30:30 · 104 阅读 · 0 评论 -
【LeetCode】88 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m +n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...原创 2018-11-20 16:10:35 · 84 阅读 · 0 评论 -
【LeetCode】 69 x的平方根
解题思路:1 这题思路很简单,坑比较多,可以从判断条件,遍历方式等去优化2 最先想到的一定是判断条件:i * i < x && (i+1) * (i+1) > x.3 其次就会想到,很粗暴的遍历。会出现两个问题:①太慢②int溢出4 判断条件优化:改为除法,即 x / i < i,避免了溢出;5 遍历优化:改为二分法;6 另外,还有牛顿开方法,完全...原创 2018-12-11 10:29:20 · 193 阅读 · 0 评论