自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 回溯--组合,排列

回溯

2022-08-14 23:32:10 285 1

原创 链表复习!

链表

2022-07-22 20:18:43 298

原创 581. 最短无序连续子数组

单调栈

2022-07-20 17:43:06 276

原创 单调栈!!!

单调栈

2022-07-20 16:41:27 271

原创 子序列 --- 编辑距离

动态规划

2022-07-19 20:26:45 165

原创 152. 乘积最大子数组

乘积最大子数组

2022-07-19 16:55:45 115

原创 338. 比特位计数

比特位计数

2022-07-19 16:32:08 100

原创 买卖股票的最佳时机

买卖股票

2022-07-19 16:12:58 288

原创 打家劫舍!

打家劫舍

2022-07-18 20:58:58 109

原创 多重背包!

完全背包

2022-07-18 19:15:01 76

原创 完全背包!

完全背包,元素可重复选取

2022-07-18 18:59:23 148

原创 494. 目标和

目标和

2022-07-18 14:21:55 77

原创 动态规划-- 背包问题

动态规划--背包问题

2022-07-18 11:51:32 2912

原创 回文相关题目

回文

2022-07-17 17:27:12 133

原创 4. 寻找两个正序数组的中位数

中位数

2022-07-17 15:29:37 153

原创 剑指offer19 正则表达式

正则匹配

2022-07-17 13:13:46 92

原创 104 二叉树的最大深度 和 543 二叉树的直径和 124 二叉树的最大路径和

二叉树

2022-07-16 22:53:08 117

原创 剑指 Offer 46. 把数字翻译成字符串

力扣

2022-07-13 09:11:12 64

原创 jmeter

12638bc9037c4d56a86b5abc11f96951

2022-05-18 23:56:10 70

原创 指 Offer 11. 旋转数组的最小数字

题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。示例:代码clas

2022-04-27 13:31:14 65

原创 96. 不同的二叉搜索树

题目给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。代码class Solution { public int numTrees(int n) { int[] dp = new int[n+1]; //初始化 dp[0] = 1; for(int i = 1 ; i <= n; i++){ for

2022-04-01 19:37:01 114

原创 343. 整数拆分

题目给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。代码class Solution { public int integerBreak(int n) { int[] dp = new int[n+1]; //初始化 dp[2] = 1; for(int i = 3; i <= n; i++){ for(

2022-04-01 19:04:08 118

原创 63. 不同路径 II

题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例:代码class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) {

2022-04-01 16:31:50 52

原创 62 不同路径

题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例:思路机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。确定dp数组以及下标的含义dp[i][j]: 表示从(0,0) 出发, 到(i, j) 有dp[i][j]条不同的路径确定递推公式求dp[i][j],只有两个方向能推导出来,即dp[i -

2022-04-01 15:23:51 110

原创 746. 使用最小花费爬楼梯

题目给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例:代码class Solution { public int minCostClimbingStairs(int[] cost) { int len = cost.length; int[] dp = new

2022-03-31 20:27:08 168

原创 509. 斐波那契数

题目斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。示例:代码class Solution { public int fib(int n) { int[] arr = new int[n+1]; arr[0] = 0;

2022-03-31 20:00:34 320

原创 动态规划。

动态规划 Dynamic Programming如果某一问题有很多重叠子问题,是用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的动态规划解题步骤状态转移公式(递推)公式步骤确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组...

2022-03-31 18:45:14 75

原创 714. 买卖股票的最佳时机含手续费

题目给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例:思路需要买入日期和卖出日期买入日期:记录更低点卖出日期:只要当前价格大于(最低价格➕手续费),就可收获利润。而最终的卖出日期,就是连

2022-03-31 16:13:02 119

原创 738. 单调递增的数字

题目当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。代码class Solution { public int monotoneIncreasingDigits(int n) { String str = Integer.toString(n); //将数字转化为字符串 char[] chars = str.toCharArray(

2022-03-31 11:05:14 254

原创 56 合并空间

题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。代码class Solution { public int[][] merge(int[][] intervals) { List<int[]> result = new ArrayList<>(); Arrays.s

2022-03-30 20:10:16 189

原创 763. 划分字母区间

题目字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。思路题目要求同一字母最多出现在一个片段中,如何把同一个字母都圈在同一个区间里?遍历时,要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点。分为以下两步第一步 : 统计每一个字符最后出现的位置第二步:从头遍历字符,并更新字符的最远出现下标。如果找到字符最远出现位置下标和当前下标相等了,就找到了分割点。代码class

2022-03-30 19:29:25 154

原创 435. 无重叠区间

题目给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。示例:代码class Solution { public int eraseOverlapIntervals(int[][] intervals) { int count = 1; Arrays.sort(intervals,(a,b) -> Integer.compare(a[0], b

2022-03-30 18:45:15 319

原创 452. 用最少数量的箭引爆气球

题目有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 **xstart ≤ x ≤ xend,**则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出

2022-03-30 14:47:47 89

原创 406. 根据身高重建队列

题目假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例:思路本题有两个维度,h和k。一定要先确定一个维度

2022-03-30 11:00:00 106

原创 860. 柠檬水找零

题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例:思路class Solution {

2022-03-29 19:33:48 160

原创 135. 分发糖果

题目n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。示例:思路一定要确定一边之后,再确定另一边。 例如 先比较每一个孩子的左边,然后再比较右边。从前向后遍历,先确定右边评分大于左边的情况只要右边的评分比左边的大,右边的孩子就多一个糖果。if (ratings[i] > rati

2022-03-29 19:13:06 222

原创 134. 加油站

题目在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。示例:...

2022-03-29 18:14:00 158

原创 1005. K 次取反后最大化的数组和

题目给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。示例:思路解题步骤第一步:将数组排列第二步:从前向后遍历,遇到负数将其变为正数,k–第三步:若K>0,反复转变数值最小的元素,直到k=0第四步:求和代码class Solution { public int largestSum

2022-03-29 15:05:41 108

原创 45. 跳跃游戏 II

题目给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例:代码class Solution { public int jump(int[] nums) { if(nums.length == 1){ return 0; } //记录跳跃的次数 i

2022-03-29 14:36:25 3769

原创 55.跳跃游戏

题目给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例:思路跳几步无所谓,关键在于可跳的范围。这个问题转化为跳跃覆盖范围可不可以覆盖到终点。每次移动取最大跳跃步数(得到最大覆盖范围),每移动一个单位,就更新最大覆盖范围。代码class Solution { public boolean canJump(int[] nums) { if(nums.length

2022-03-29 10:59:14 4489

空空如也

空空如也

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

TA关注的人

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