LeetCode动态规划专题:第十八天

力扣刷题(python)50天——第十八天:最大子序和 力扣刷题(python)50天——第十八天:最大子序和 题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 来源:力... 阅读详情

Leetcode300. 最长递增子序列

思路:动态规划

O(N2)O(N^2)O(N2),以右指针为端点的

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        vector<int> f(nums.size(), 1);
        int maxn = 1;
        for (int i = 0; i < nums.size(); i ++ ) {
            for (int j = 0; j < i; j ++ ) {
                if (nums[i] > nums[j])
                {
                    f[i] = max(f[i], f[j] + 1);
                    maxn = max(maxn, f[i]);
                }
            }
        }
        return maxn;
    }
};

Leetcode376. 摆动序列

思路:贪心

删去所有重复的元素,每一次挑选极值。
证明:假设,我们不挑选极值,一定会少选,但是这样选可能会选到重复的元素,所以我们先预处理删除所有重复元素

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        nums.erase(unique(nums.begin(), nums.end()), nums.end());
        int n = nums.size();
        if (n <= 2) return n;
        int res = 2;
        for (int i = 1; i + 1 < n; i ++ ) {
            int a = nums[i - 1], b = nums[i], c = nums[i + 1];
            if (b > a && b > c || b < a && b < c) res ++ ;
        }
        return res;
    }
};
从零开始的力扣刷题记录-第十八天 暴力解太多了,还是要好好想想有没有简单解法 阅读详情

相关推荐

Leetcode小白上线第十八天

Leetcode小白上线第十八天 1.JAVA 最小高度树 题目 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/proble

weixin_45684138的博客 182

代码随想录第十八天|动态规划(2)

LeetCode 1049. 最后一块石头的重量 II思想:本题跟上题十分相似,可以借助上一题的想法,两块石头互相比,那么就可以更改为找出两个总和差不多的子集合,然后作差,得到最小的可能重量。思想跟上题差不多就不过多赘述了。这里注意还是dp数组的大小取舍。i++) {j--) {时间复杂度:O(n^2),空间复杂度:O(n)。动态规划中的01背包问题,最最最最最最主要的就是要把问题抽象成01背包问题,什么是背包,什么是物品,物品的重量是什么,物品的价值又是什么。之后就好做了。

qq_49711625的博客 1000

【力扣刷题|第十八天】最长公共子序列 编辑距离

改为一维数组,这里看二维数组的递推式子骂我们需要的是,上面,左面和左上的值,和上题一样需要记录左上的值,但这道题我们需要在第二个循环开始的时候初始化一维数组最左边的值,这里我们需要先记录上一次循环一维数组最左边的值,在初始化这次循环一维数组最左边的值。简化为一维数组,我们发现计算当前位置的时候,我么需要知道这个位置左边的值,上面的值和左上的值,但是每次的计算结果就会覆盖掉左上的值,那该怎么办呢。的时候是否需要考虑都不选的情况,如下图,只选择一个的情况,在。的初始化值,这里初始化的值和上面边界条件一样。

shenqibaobao的博客 508

基础算法Leetcode)刻意练习第十八天——字符串

引言 由 “LSGO软件技术团队” 组织的 “基础算法刻意练习” 采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。以下是我的每日打卡记录: Task18.正则表达式匹配 Leetcode第10题 难度:困难 题目概述: 给你一个字符串 s 和...

qq_45484498的博客 249

LeetCode——第十八天(统计「优美子数组」)

LeetCode——第十八天 1248. 统计「优美子数组」 给你一个整数数组 nums 和一个整数 k。 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。 请返回这个数组中「优美子数组」的数目。 示例 1: 输入:nums = [1,1,2,1,1], k = 3 输出:2 解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。 ...

qq453660983的博客 205

LeetCode 热题 HOT 100 第十八天

Leetcode438. 找到字符串中所有字母异位词 class Solution { public: vector<int> findAnagrams(string s, string p) { unordered_map<char, int> cnt; for (auto& c : p) cnt[c] ++ ; int tot = cnt.size(); vector<int> res;

释然的成长之路 150

万人千题:全题解:《算法零基础100讲》

从第一天开始的算法打卡 欢迎加入万人千题社区。 / 第二十一天 力扣1812 判断国际象棋棋盘中一个格子的颜色 力扣LCP17:速算机器人 力扣709 转换成小写字母 力扣1704. 判断字符串的两半是否相似 力扣1844. 将所有数字用字符替换 力扣1876. 长度为三且各字符不同的子字符串 力扣520. 检测大写字母 力扣2011. 执行操作后的变量值 力扣1805. 字符串中不同整数的数目 燃! ...

01解题者~博客 723

Leetcode算法第十八天

序言 题目: 公司安排2N个人参加面试。第i个人坐飞机飞到城市A的费用为costs[i][0],飞到城市B的费用为 costs[i][1]。 返回安排好每个人都前往某城市面试的最低费用,A、B城市各有N个人参加 例子: ...

Jiana_Feng的博客 295

打卡第十八天(Task18)----正则表达式匹配

Leetcode刻意练习----字符串6 题目 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 '’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例...

Tianyumont的博客 432

基础算法Leetcode)刻意练习训练营:第十八天打卡

今天的题目是10. 正则表达式匹配 class Solution(object): def isMatch(self, text, pattern): memo = {} def dp(i, j): if (i, j) not in memo: if j == len(pattern): ...

weixin_43451540的博客 263

leetcode 刷题第十八天

solve 18

m0_62627453的博客 136

基础算法Leetcode)刻意练习第十八天——正则表达式

LeetCode第10题 思路。。奈何本人算法水平不够,暴力自己写了半天,死在了*号处理不好,结尾也收不好,动规看了半天一知半解,还是现成的正则表达式好用,方便记忆。以后有机会再回来拿动规解吧。。。 ...

qq_45607874的博客 136

[坚持打卡23天]力扣leetcode 面试题 01.08. 零矩阵

思路就是利用行列都会消掉,把矩阵的0位用来存储是否消除,节省了m+n的空间,但是需要注意如果开始0位上有0,那么需要额外处理对应行列;和稀疏图一样,我们使用m x n 的矩阵很多空间是浪费掉了,我们只需要一行或者一列即可,同时遍历的时候也只需要满足在行列上有0即可。开始看题解了,第一遍还没懂,中等难度也可能是在这里,实现出来简单,要求对应时间空间复杂度的难想;编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。欢迎评论区交流,每日打卡,冲冲冲!这道题,标注是中等题。

木秀林的博客 1380

leetcode刷题[22天小总结] 面试题 01.09. 字符串轮转

给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。输入:s1 = “waterbottle”, s2 = “erbottlewat”21天能够形成一个习惯,从7号开始开始坚持刷题,已经23天了。输入:s1 = “aa”, s2 = “aba”字符串长度在[0, 100000]范围内。欢迎评论区交流,每日打卡,冲冲冲!你能只调用一次检查子串的方法吗?

木秀林的博客 671

代码随想录算法训练营第三十三天|动态规划理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的。

weixin_47748259的博客 1223

暑假leetcode剑指offer每日一题打卡-第十八天-剑指 Offer 14- I. 剪绳子(middle)

线性动态规划五部曲拿捏

qq_51898139的博客 362

代码随想录算法训练营第十八天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

视频讲解:你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!看一遍再也不会做错!,梦开始的地方,Leetcode:1.两数之和,学透哈希表,map使用有技巧!,单调栈,经典来袭!LeetCode:42.接雨水,Manacher 马拉车算法【力扣周赛 420】,一台服务器究竟能干啥?

qq_73932604的博客 776

代码随想录算法训练营第三十五天|343. 整数拆分,96.不同的二叉搜索树

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

weixin_47748259的博客 1110
上一篇: 9-6每日一题:二分查找
下一篇: 剑指 Offer第二天
Shirandexiaowo
博客等级 码龄7年 44粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shirandexiaowo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值