自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 数组实现队列2

这是用数组模拟环形队列,可以和上一个作为对比。java代码如下:package cn.gyk.quene;import java.util.Scanner;public class ArrayToQuene { public static void main(String[] args) { ArrayQuene quene = new ArrayQuene(4); Scanner sc = new Scanner(System.in); char key = ' ' ; b

2020-09-01 21:57:12 113

原创 数组实现队列1

package cn.gyk.quene;import java.util.Scanner;public class ArrayToQuene { public static void main(String[] args) { ArrayQuene quene = new ArrayQuene(4); Scanner sc = new Scanner(System.in); char key = ' ' ; boolean loop = true ; while(loop)

2020-09-01 18:47:07 117

原创 稀疏数组(五子棋,IO)

package cn.gyk.shuzu;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.ArrayList;public class Spa.

2020-09-01 17:50:15 188

原创 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 163

原创 leetcode第120题 三角形最小路径和 --贪心算法

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。又是一个贪心算法,一直弄不对,是因为类型搞错了。‘class Solution { public int minimumTo

2020-07-07 23:48:35 347

原创 leetcode 中等难度 第90题 子集Ⅱ -- 剪枝

看起来挺难,需要好好分析一下。和第78题类似给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。我的代码如下:明白了第78题之后,这一题就是去重了。去重的思路应该就是剪枝了。class Solution { public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> ans =

2020-07-07 21:54:15 184

原创 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 127

原创 leetcode中等难度 第80题 删除排序数组中的重复项 II

这个题自己写出来的,快慢指针问题,遍历一遍就可以解决。给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class

2020-07-05 23:59:48 130

原创 leetcode中等难度 第79题 单词搜索 -- 回溯

暂时不太会做的题,看了题解,能过理解,挺有意思的,跟递归一样。给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-search著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { int

2020-07-05 23:18:02 1995

原创 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 103

原创 leetcode 第75题 颜色分类

自己做出来的一道题,很简单,一次遍历,三个指针,其实是两指针吧。给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-colors著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { pub

2020-07-04 22:50:30 97

原创 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 121

原创 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 260

原创 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 149

原创 leetcode中等 第63题 不同路径Ⅱ

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。又来了一个上一题的加强版。还算比较简单。我第一

2020-07-02 23:26:46 78

原创 leetcode 第62题 不同路径-动态规划

我小时候还经常想这一类的问题呢,哈哈。题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。首先想到的是递归,但是用的时间太长了。还是用动态

2020-07-02 22:51:24 153

原创 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 151

原创 leetcode 第57题 插入区间

给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。第一次写出来困难难度的题。修修改改好多次。还是很开心。一会再把别人的解法贴出来。class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { List<int []> ans = new ArrayList<>

2020-07-02 10:36:03 145

原创 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 121

原创 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 97

原创 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 234

原创 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 110

原创 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 192

原创 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 113

原创 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 127

原创 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 128

原创 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 99

原创 leetcode中等难度 第31题 下一个排列

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。都说题目难懂,我觉得还行。就是没写出来。class Solution { public voi

2020-06-29 21:30:37 152

原创 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 158

原创 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 170

原创 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 115

原创 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 132

原创 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 98

原创 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 139

原创 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 82

原创 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 213

原创 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 110

原创 leetcode 第66题 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。我的解法,臃肿的解法class Solution { public int[] plusOne(int[] digits) {

2020-06-23 20:51:07 133

原创 leetcode 第56题 最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。第一种方法:class Solution { public int maxSubArray(int[] nums) { //动态规划 int pre = 0, ans = nums[0] ; for(int num : nums){ pre = pre+num > num ? pre+num : num ;

2020-06-23 10:51:14 93

原创 leetcode 第35题 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。我的代码:class Solution { public int searchInsert(int[] nums, int target) { if( nums.length == 0)return 0 ; int i ; for( i = 0 ; i < nums.length ; i ++)

2020-06-22 22:22:45 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除