![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划系列
Frank.Ren
这个作者很懒,什么都没留下…
展开
-
乘积小于 K 的子数组 leetcode java dailywork
给你一个整数数组nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。class Solution { public int numSubarrayProductLessThanK(int[] nums, int k) { int n = nums.length, ret = 0; int prod = 1, i = 0; for (int j = 0; j < n; j++) { ...原创 2022-05-05 14:55:37 · 313 阅读 · 1 评论 -
动态规划 字符的最短距离
给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。两个下标 i 和 j 之间的 距离 为 abs(i - j) ,其中 abs 是绝对值函数。class Solution { public int[] shortestToChar(String s, char c) { i原创 2022-04-22 08:31:58 · 361 阅读 · 1 评论 -
动态规划系列(18) leetcode java篇 时间复杂度及空间复杂度优化
第一题:最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。class Solution { public int lengthOfLIS(int[] nums) { int len = nums.length; if(len==0){ .原创 2022-04-15 15:04:48 · 251 阅读 · 1 评论 -
动态规划系列(17) leetcode java篇
第一题:最长回文子串给你一个字符串s,找到s中最长的回文子串。class Solution { public String longestPalindrome(String s) { if (s == null || s.length() < 1) { return ""; } int start = 0, end = 0; for (int i = 0; i < s.leng...原创 2022-04-14 09:51:14 · 917 阅读 · 1 评论 -
动态规划系列(15) leetcode java篇
第一题:不同路径一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?这道题有两种思路做题:一种是动态规划: public int uniquePaths(int m, int n) { // long ret = 1; // for (int x = n, y = 1..原创 2022-04-12 11:46:10 · 82 阅读 · 1 评论 -
动态规划系列(10) leetcode Java篇
第一题:等差数列划分如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。class Solution { public int numberOfArithmeticSlices(int[] nums) { int le原创 2022-04-08 10:50:18 · 365 阅读 · 1 评论 -
动态规划系列(8)
第一题:最佳买卖股票时机含冷冻期给定一个整数数组prices,其中第prices[i]表示第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。class Solution { public int maxProfit(int[] prices) { ...原创 2022-04-07 10:26:43 · 500 阅读 · 1 评论 -
动态规划系列(7) leetcode java篇
第一题:最佳观光组合给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观光景点能取得的最高分。class Solution { public int maxScoreSightseeingPair(int[] v原创 2022-04-07 09:46:40 · 80 阅读 · 1 评论 -
动态规划系列(6) leetcode java篇
第一题:乘积最大子数组给你一个整数数组 nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个32-位 整数。子数组 是数组的连续子序列。class Solution { public int maxProduct(int[] nums) { int len = nums.length; if(nums==null||len==0){ ret..原创 2022-04-06 11:30:18 · 535 阅读 · 1 评论 -
动态规划系列(5) leetcode java 篇
第一题:最大子数组和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。class Solution { public int maxSubArray(int[] ns) { int max = ns[0]; int pre = 0; for(int x:ns){ pre +=x; pre = Ma...原创 2022-04-02 10:29:22 · 844 阅读 · 1 评论 -
动态规划系列(4) leetcode Java篇
第一题:跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。class Solution { public boolean canJump(int[] num) { int len = num.length; if(len==1){ return true; } int mo.原创 2022-04-01 12:17:20 · 4118 阅读 · 1 评论 -
动态规划系列(3) leetcode java篇
第一题:打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。class Solution { public int rob(int[] nums) { int len = nums.length; i.原创 2022-03-31 10:29:01 · 94 阅读 · 1 评论 -
动态规划系列(2) leetcode java
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?class Solution { public int climbStairs(int n) { int s = 0; int e = 1; int tmp = 0; while(n-->0){ tmp = e; e+=s; .原创 2022-03-30 14:18:46 · 519 阅读 · 1 评论 -
动态规划系列(1) leetcode java
斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:核心思想: F(n)=F(n−1)+F(n−2)class Solution { public int fib(int n) { int f0 = 0; int f1 = 1; int tmp; if(n<=1){ return n; ...原创 2022-03-29 14:22:18 · 105 阅读 · 1 评论