LeetCode
朝阳宋哈娜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode--19. 删除链表的倒数第N个节点
热门题,难度中等题。给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。很明显,经典的双指针,就算没看过双指针相关,也应该能想到两个遍历下标保持n的距离,当快的到了终点,那么现在的就是要删除的。要注意的一个地方就是养成考虑特殊情况的习惯,删除第一个。删除第一个的话就需...原创 2020-06-04 09:40:43 · 151 阅读 · 0 评论 -
LeetCode152. 乘积最大子数组
签到题,中等题。给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。这种题第一想法就是动态规划的思想,但是涉及到乘积与加减不一样,他很可能负负得正取到更大的。我就没想到除了当前最大以外,再设一个当前最小值,这样就可以避免遍历到下一个为负的情况了。我的代码逻辑是:以0为分段标记,记录当前段的值tmpNum,当前段中遇到...原创 2020-05-18 18:39:01 · 201 阅读 · 0 评论 -
LeetCode--25. K 个一组翻转链表
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5难度是困难题,不过思路好想,就是实现的时候容易写错。我的思路:1.首...原创 2020-05-16 21:51:37 · 256 阅读 · 0 评论 -
LeetCode--560. 和为K的子数组
给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数k的范围是[-1e7, 1e7]。刚开始看到的时候想到了用HashMap记录前n项和,以及用当前前n项和减去之前任意的,如果有值为k,那么就有一组存在,但是我没想到的是map&l...原创 2020-05-16 10:08:07 · 202 阅读 · 0 评论 -
LeetCode--50. Pow(x, n)
计算x的n次方。n为整数。-100.0 <x< 100.0 n是 32 位有符号整数,其数值范围是[−2^31,2^31− 1]中等题。这个题大家应该都能想到递归的方式计算,这里主要记录一下官方给的非递归解法。递归的代码如下: public double simPow(double x, int n){ //double tmp; if(n == 0) return 1.0; doub...原创 2020-05-11 15:49:30 · 238 阅读 · 0 评论 -
LeetCode--236. 二叉树的最近公共祖先
难度中等题。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。思路有多种。 1. 纯粹的自底向上。后序遍历中,先找到该节点,那么返回一个true。当某个节点的左右子树都返回true时,该节点就是要求的。如果两个点是祖先后代关系,那么返回为当前节点值等于其中一个查询值且一个子树为true...原创 2020-05-10 18:11:26 · 308 阅读 · 0 评论 -
LeetCode--221. 最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4我的思路:我用的是暴力,但是过程有所优化。我找的是遍历过程中该点最大的正方形边长。优化思路是:假设当前节点dp(i,j)为0,那正常后移一位计算dp(i,j+1)。如果do(i,j)==1,标记tmpRes = 1,接下来计算dp(i+1,j+1),如果也是1,那就计算这个点对应的这个列是否都为1,如果有其原创 2020-05-08 23:22:47 · 141 阅读 · 0 评论 -
LeetCode--572. 另一个树的子树
给定两个非空二叉树 s 和 t,检验s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。难度是简单题。但是方法多种多样,有些方法考验功底的。我想到了两种。第一种:对s进行层次遍历,他的每个节点为根的子树与t进行比较。很明显这种方法好写,但是效率不高。第二种:对其进行先序排列,同时给叶节点的孩子节点设...原创 2020-05-07 23:27:18 · 314 阅读 · 0 评论 -
LeetCode--983. 最低票价
动态规划的思想。我们不仅要从开始往后找最优解。像这种能晚发生就晚发生的可以逆向,从后往前找。在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] ...原创 2020-05-06 23:05:10 · 186 阅读 · 0 评论 -
LeetCode--98. 验证二叉搜索树
5.5日签到题。给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。我的思路:我想到的有两种解法: 1.形式上简单,时间空间复杂度较高。用递归直接中序遍历得到该二叉树的排序,如果符合条件,那么这个序列就是严格的递增序列...原创 2020-05-06 09:09:17 · 224 阅读 · 0 评论 -
LeetCode--45 跳跃游戏 II
签到题。先吐槽一下,标的是困难题,可是感觉难度还不如有些简单题。。。不知道怎么定的难度标准。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 ...原创 2020-05-04 12:08:29 · 870 阅读 · 0 评论 -
LeetCode--53 最大子序和
leetcode签到题描述 :给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。(备注是道简单题,但是可能刚开始细节没想好,所以修改了一个小时才完全改好细节。。。)输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。我的思路:首先定义三个变量 ...原创 2020-05-03 11:01:44 · 206 阅读 · 0 评论 -
LeetCode-365-水壶问题
有两个容量分别为x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空官方给出的递归方式不太赞成,具体解释可以看官方,感觉还是考数学知识,贝祖定理。可以构建ax+by=z。找到x y的最...原创 2020-05-02 22:23:24 · 300 阅读 · 0 评论 -
LeetCode-3找到字符串中最长子不重复子串的长度
描述:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。难度:中等题。我的思路是:类似于局部最优的思想吧。把字符串遍历一遍,找到开头到遍历过程中的最长不重复子串长度,最后得到的就是结果。思想是:首先new一个HashMap,key是遍历过程中的字符,val是在字符串中的下标。 为了简化思想,构建三个变量: res,最终的长度;...原创 2020-05-02 14:52:02 · 398 阅读 · 0 评论 -
leetCode——836 签到 矩形是否重叠
题目很简单。给定两个整形数组,长度为4,分别为矩形左下角坐标和右上角坐标,判断是否重合。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]输出:false这里有两种大方向思路:1.考虑重叠的情况 2.考虑不重叠的情况算法思维...原创 2020-03-18 23:39:59 · 233 阅读 · 0 评论 -
LeetCode——1 寻找两数之和为指定数
描述: 输入:一个整数的数组,一个整数。寻找两个数之和为这个整数的所在下标(假设只有一组能满足) 返回:一个Int[2] 的数组,得到两个数的下标。又是一道简单题,不过明显感觉自己基础忘了不少,居然没想到用HashMap,第一反应就用了两个for。先上自己的代码。再上HashMap的方法代码。/*这是自己写的两个for*/public st...原创 2020-03-16 15:31:21 · 183 阅读 · 0 评论 -
LeetCode刷题——字符串压缩
好久没刷题了,重新开始。描述: 输入:aaabbccc 返回:a3b2c3 如果返回的长度不小于输入的,则返回输入的String。简单题,不多说,当做记录。 public static String compressString(String S){ StringBuffer result = new St...原创 2020-03-16 11:12:46 · 376 阅读 · 0 评论
分享