杂项
文章平均质量分 80
abysswatcher_1
这个作者很懒,什么都没留下…
展开
-
leetcode动态规划(字符串+递增子序列)
最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。i到达新的位置时,搜索i之前的数值,如果i比之前的某个数值大,则更新dp数组为dp[j]+1,因为会有多个可能的较大的值,所.原创 2021-09-05 12:23:14 · 293 阅读 · 0 评论 -
leetcode动态规划(买卖股票问题)
买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能.原创 2021-08-18 22:09:34 · 476 阅读 · 0 评论 -
leetcode动态规划
爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?动态规划模板题,思考方法,1个台阶只有一种走法,2个台阶,可以一次走2个,或者走两次一个有两种。所以如果有n个台阶,先走一个,在考虑剩下n-1个;或者先走两个,在考虑剩下(n-2)个,即f(n)=f(n-1)+f(n-2)。class Solution { HashMap<Integer,Integer> map=new HashMap(); pu.原创 2021-08-16 22:35:05 · 104 阅读 · 0 评论 -
leetcode回溯+剪枝(排列,组合,子集问题)
排列问题46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]排列问题,采用回溯算法解决,首先将选择过程想成树型结构,并通过回溯,得到所有的结果。排列问题需要考虑顺序,此类回溯通用解法,设一个二维数组res保存所有的结果,一个数组path保存当前搜索的路径,depth表示当前树中的深度,对于原创 2021-08-14 23:18:10 · 392 阅读 · 0 评论 -
leetcode广度优先搜索(bfs)
01 矩阵给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]此类为图中多起点的搜索问题,将多个起点看作一个整体,先寻找图中所有的0作为起点,其他格子设置为-1,表示还未访问过的格子。采用队列存储,先把所有的0入队,之后依次出队,并把出队的0能够到达的格子入队.原创 2021-08-14 23:17:52 · 180 阅读 · 0 评论 -
leetcode深度优先搜索(dfs)
图像渲染有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。最后返回经过.原创 2021-08-14 23:17:33 · 118 阅读 · 0 评论 -
leetcode滑动窗口
无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。输入: s = “abcabcbb”输出: 3采用滑动窗口搜索字符串,使用hashset存储当前子串中包含的字符。向右滑动时,判断右侧字符是否在hashset中(contain方法判断是否重复),如果重复的话,则将左端向右移动,同时从hashset中移除左端所指的字符,并将右侧字符存入hashset之中。class Solution { public int lengthOfLongestSub.原创 2021-08-14 23:16:40 · 151 阅读 · 0 评论 -
leetcode双指针(基础)
189.旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。(不使用额外空间)输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]先将整体数组内容反转,之后前k个反转,以及k之后的内容在反转。反转采用双指针实现,k应当根据长度求余数,存在k大于length的情况。class Solution { public void rotate(int[] nums, int k) { k %= nums.原创 2021-08-14 23:15:51 · 103 阅读 · 0 评论 -
leetcode二分问题
1.给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution { public int search(int[] nums, int target) { int i=0,j=nums.length-1; int flag=0; int mid=0; while(i<=j) { mid=i+(j-原创 2021-08-14 23:11:43 · 175 阅读 · 0 评论