leetcode学习
spades_seven
这个作者很懒,什么都没留下…
展开
-
leetcode 第122题 买卖股票的最佳时机 II -- 波峰法
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。代码:一次遍历class Soluti原创 2020-07-08 00:18:52 · 253 阅读 · 0 评论 -
leetcode第120题 三角形最小路径和 --贪心算法
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。又是一个贪心算法,一直弄不对,是因为类型搞错了。‘class Solution { public int minimumTo原创 2020-07-07 23:48:35 · 423 阅读 · 0 评论 -
leetcode 中等难度 第90题 子集Ⅱ -- 剪枝
看起来挺难,需要好好分析一下。和第78题类似给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。我的代码如下:明白了第78题之后,这一题就是去重了。去重的思路应该就是剪枝了。class Solution { public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> ans =原创 2020-07-07 21:54:15 · 232 阅读 · 0 评论 -
leetcode 第81题 搜索旋转排序数组 II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。和第33题类似clas原创 2020-07-07 20:47:26 · 157 阅读 · 0 评论 -
leetcode中等难度 第80题 删除排序数组中的重复项 II
这个题自己写出来的,快慢指针问题,遍历一遍就可以解决。给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class原创 2020-07-05 23:59:48 · 157 阅读 · 0 评论 -
leetcode中等难度 第79题 单词搜索 -- 回溯
暂时不太会做的题,看了题解,能过理解,挺有意思的,跟递归一样。给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-search著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { int原创 2020-07-05 23:18:02 · 2096 阅读 · 0 评论 -
leetcode 第78题 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> ans = new ArrayList<>() ; List<Integer> mid = new原创 2020-07-04 23:38:41 · 126 阅读 · 0 评论 -
leetcode 第75题 颜色分类
自己做出来的一道题,很简单,一次遍历,三个指针,其实是两指针吧。给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-colors著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { pub原创 2020-07-04 22:50:30 · 121 阅读 · 0 评论 -
leetcode 第74题搜索二维矩阵
二分法查找的话,总是会有一些细节没有看出来。编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-a-2d-matrix著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public boolean searchMa原创 2020-07-04 22:02:32 · 209 阅读 · 0 评论 -
leetcode 第73题 矩阵转置
今天和昨天和明天搬家,可能不太有时间,今天抽空写道题。给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。主要要求是原地转置,所以比较难一点。class Solution { public void setZeroes(int[][] matrix) { if(matrix.length == 0){ return ; } int m = matrix.length ;原创 2020-07-04 21:16:00 · 394 阅读 · 0 评论 -
leetcode 中等难度 第64题 最小路径和-动态规划
简单的动态规划题,还没有前面两个难。给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。代码:class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length ; for(int i = 1 ; i < m ; i ++){//第一列变了原创 2020-07-04 21:07:30 · 175 阅读 · 0 评论 -
leetcode中等 第63题 不同路径Ⅱ
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。又来了一个上一题的加强版。还算比较简单。我第一原创 2020-07-02 23:26:46 · 100 阅读 · 0 评论 -
leetcode 第62题 不同路径-动态规划
我小时候还经常想这一类的问题呢,哈哈。题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。首先想到的是递归,但是用的时间太长了。还是用动态原创 2020-07-02 22:51:24 · 215 阅读 · 0 评论 -
leetcode 中等难度 第59题 螺旋矩阵Ⅱ
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。一次通过,从外向内遍历就可以了。class Solution { public int[][] generateMatrix(int n) { int [][] ans = new int [n][n]; int start1 = 0 ; int end1 = n ; int start2 = 0; int end2 =原创 2020-07-02 18:15:46 · 222 阅读 · 0 评论 -
leetcode 第57题 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。第一次写出来困难难度的题。修修改改好多次。还是很开心。一会再把别人的解法贴出来。class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { List<int []> ans = new ArrayList<>原创 2020-07-02 10:36:03 · 229 阅读 · 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] 可被视为重叠区间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-inte原创 2020-07-01 19:18:01 · 148 阅读 · 0 评论 -
leetcode第41题 缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。困难题,不会做。class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length ; for(int i = 0 ; i < n ; i ++){ if(nums[i]<=0){ nums[i] = n + 1 ; } }原创 2020-07-01 16:54:12 · 145 阅读 · 0 评论 -
leetcode 困难 第45题 跳跃游戏Ⅱ
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jump-game-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。第一种方法,慢的,两层循环。class Solution { public int jump(int[] nums) { int原创 2020-07-01 14:56:23 · 280 阅读 · 0 评论 -
leetcode 中等难度 第55题 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。最先想到的就是这个,一个一个的来。class Solution { public boolean canJump(int[] nums) { if(nums.length == 0) return false ; boolean[] ans = new boolean[nums.length]; for(int原创 2020-07-01 12:37:45 · 160 阅读 · 0 评论 -
leetcode 中等难度 第54题 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。思路是对的,就是在边界的处理上,有一点小问题。class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list = new ArrayList<>(); if(matrix==null || matrix.length=原创 2020-07-01 11:05:08 · 252 阅读 · 0 评论 -
leetcode中等难度 第39+40题 组合总合
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。39题,回溯+剪枝c原创 2020-06-30 22:30:48 · 141 阅读 · 0 评论 -
leetcode中等难度 第48题 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。两层for循环:class Solution { public void rotate(int[][] matrix) { int start = 0 ; int len = matrix.length-1; while(start < len){ for(int i = 0 ; i <len - start ; i++){原创 2020-06-30 19:40:52 · 160 阅读 · 0 评论 -
leetcode中等难度 第33题 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。第一反应原创 2020-06-30 17:57:58 · 165 阅读 · 0 评论 -
leetcode中等难度 第33题 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array著作权归领扣网络所有。商原创 2020-06-30 16:58:46 · 137 阅读 · 0 评论 -
leetcode中等难度 第31题 下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。都说题目难懂,我觉得还行。就是没写出来。class Solution { public voi原创 2020-06-29 21:30:37 · 183 阅读 · 0 评论 -
leetcode 中等难度 第18题 四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/4sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。完全仿照三数之和。自己写的,有点乱。class Solution { public List原创 2020-06-29 18:29:10 · 199 阅读 · 0 评论 -
leetcode中等难度 第16题 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。我还以为和上一题(15)一摸一样,结果还是有一定差别的。class Solution { public int th原创 2020-06-29 17:35:46 · 214 阅读 · 0 评论 -
leetcode中等难度 第215题 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。这里也抖个机灵,sort一下class Solution { public int findKthLargest(int[] nums, int k) { Arrays.sort(nums) ; return nums[nums.length - k] ; }}其实应该至少用个快速排序。class Solution {原创 2020-06-29 16:36:14 · 145 阅读 · 0 评论 -
leetcode中等难度 第15题 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。看一遍答案自己写的,之前答案都看不懂。双指针:class Solution { public List<原创 2020-06-29 15:34:40 · 172 阅读 · 0 评论 -
leetcode中等难度 第11题 盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2020-06-28 18:36:08 · 126 阅读 · 0 评论 -
leetcode 第121题 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public int maxP原创 2020-06-28 10:24:09 · 185 阅读 · 0 评论 -
leetcode 第119题 杨辉三角Ⅱ
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。class Solution { public List<Integer> getRow(int rowIndex) { List<List<Integer>> result = new ArrayList<List<Integer>>(); for(int i = 0 ; i <=r原创 2020-06-28 00:06:26 · 129 阅读 · 0 评论 -
leetcode 第118题 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。对于ArrayList不熟悉,看了答案之后写的。class Solution { public List<List<Integer>> generate(int numRows) { List< List<Integer>> result = new ArrayList<List<Integer>原创 2020-06-27 23:37:03 · 277 阅读 · 0 评论 -
leetcode 第88题 合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2020-06-27 22:41:56 · 135 阅读 · 0 评论