草庐IT

leetcode题解

全部标签

【单调栈】LeetCode:2818操作使得分最大

作者推荐map|动态规划|单调栈|LeetCode975:奇偶跳本文涉及的基础知识点单调栈分类、封装和总结题目给你一个长度为n的正整数数组nums和一个整数k。一开始,你的分数为1。你可以进行以下操作至多k次,目标是使你的分数最大:选择一个之前没有选过的非空子数组nums[l,…,r]。从nums[l,…,r]里面选择一个质数分数最高的元素x。如果多个元素质数分数相同且最高,选择下标最小的一个。将你的分数乘以x。nums[l,…,r]表示nums中起始下标为l,结束下标为r的子数组,两个端点都包含。一个整数的质数分数等于x不同质因子的数目。比方说,300的质数分数为3,因为300=2*2*3*

【数据结构】LRU缓存的简单模拟实现(leetcode力扣146LRU缓存)

文章目录一、定义二、LRU模拟实现二、代码实现一、定义LRU是LeastRecentlyUsed的缩写,意思是最近最少使用,它是一种Cache替换算法。Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时,就需要挑选并舍弃原有的部分内容,从而腾出空间来放新内容。LRUCache的替换原则就是将最近最少使用的内容替换掉。二、LRU模拟实现146.LRU缓存下面我们就借力扣的这道题来简单实现一个题目中要求我们以O(1)的时间复杂度来完成,查找的话我们首先肯定会想到哈希表,但又涉及一个问题,我们查找完之后还需要更新一下刚刚查找数据的位置,将这个数据置为是新的数据,我们如何

LeetCode:455. 分发饼干——贪心算法

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123贪心算法是在每个阶段选取局部最优解,最终得到全局最优解的一种思想。贪心算法与动态规划的思路相似,但贪心算法要在每个阶段选择最优解,而这个最优解不一定是全局最优解,贪心算法在某些情况并不能得到全局最优解。贪心算法的基本思路:找到最优子结构:将问题分解为多个子问题,并且每个子问题具有最优子结构,即解决子问题的最优解可以组合成原问题的最优解。找到贪心策略:为了解决每个子问题,找出一种最优策略,使得每个子问题都采用该策略,最终可以得到原问题的最优解。证明贪心策略的合理性:贪心策略在每个阶段选取局部最优解,最终可以得到全局最优解

线性代数(三) | 向量组的秩 线性相关无关 几何直观理解 题解应用

文章目录1维数?向量组的秩究竟是什么?1.1线是一维的1.2面是二维的1.3体是三维的2线性相关、线性无关、线性表示究竟是什么?2.1基于以上几何直观的解题角度2.2基于方程组的解题角度1维数?向量组的秩究竟是什么?1.1线是一维的例:空间中的(1,3)这个向量(下图1黑色有向线段),从某种意义来说可以看做是一条线(黄色直线),因为这条线上的所有量,比如(2,6)(1.5,4.5)这些向量都可以用这个向量表示(其实也就是所谓的“线性表示")。(1,3,2)也可以看做一条线(下图1黑色有向线段)。我们可以发现,单个向量最多只能表示一维的直线(黄色直线),我们说这个向量组(单个向量也可以看为向量组

每日一题——LeetCode1002

方法一个人方法:将words里的字符串的每个字符出现的次数都转为键值对的形式:循环求两两键值对数组的交集:最后的交集就是重复出现的字符和次数,把键值对转回字符数组形式即可思路对了,但是太复杂了,时间效率很低varcommonChars=function(words){vararr=[],newWords=[],union=[]for(varitemofwords){for(varcharofitem){if(!arr[char]){arr[char]=1}else{arr[char]++}}newWords.push(arr)arr=[]}arr=newWords[0]for(vari=1;i

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例包括课程视频单调双队列贪心题目给你一个下标从0开始的整数数组nums。你可以执行任意次操作。每次操作中,你需要选择一个子数组,并将这个子数组用它所包含元素的和替换。比方说,给定数组是[1,3,5,6],你可以选择子数组[3,5],用子数组的和8替换掉子数组,然后数组会变为[1,8,6]。请你返回执行任意次操作以后,可以得到的最长非递减数组的长度。子数组指的是一个数组中一段连续非空的元素序列。示例1:输入:nums=[5,2,2]输出:1解释:这个长度为3的数组不是非递减的。我们有2种方案使数组长度为2。第一种,选择子数组

【Py/Java/C++三种语言OD2023C卷真题】20天拿下华为OD笔试之【不定滑窗】2023C-最小矩阵宽度【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录题目描述与示例题目描述输入描述输出描述示例输入输出解题思路贪心地选满列向滑窗三问滑窗三答代码pythonjavacpp时空复杂度华为OD算法/大厂面试高频题算法练习冲刺训练题目描述与示例题目描述给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。输入描述第一行输入两个正整数N,M,表示矩阵大小。接下来N行M列表示矩阵内容。下一行包含一个正整数K。下一行包含K个整数,表示所需包含的数组,K个整数可能存在重复数字。所有输入数据小于1000。输出描述输出包含一个整数,表示满足要求子矩阵的最小宽度,若找不到,输出-

2022数学建模“五一杯”B题 题解+论文

基于bp神经网络的矿石加工质量控制问题摘要本文主要研究温度等因素对矿石加工质量控制问题。提高矿石加工质量,对节约不可再生资源和能源,推动节能减排,助力“双碳”’目标的实现,具有重要的意义。针对问题一,我们要实现在给定系统温度和原矿参数的情况下,预测可能性最大的产品的指标。由于在刚开始调温时,系统还未稳定,所以指标参数会有大幅度变化。因此我们要首先对附件一中的数据进行预处理,去除其中的不正常数据。同时,将系统一和系统二的温度,四个原矿参数作为输入,四个产品指标作为输出,利用bp神经网络训练它,用训练好的神经网络,来预测题目已知温度和原矿参数条件下的产品指标。最终得到结果为:80.9556、22.

【Leetcode】重排链表、旋转链表、反转链表||

目录💡重排链表题目描述方法一:方法二:💡旋转链表题目描述方法:💡反转链表||题目描述方法:💡总结💡重排链表题目描述给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 →L1 →…→Ln-1 →Ln 请将其重新排列后变为:L0 → Ln → L1 → Ln-1 → L2 → Ln-2 →…不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。提示:链表的长度范围为 [1,5*104]1方法一:将链表的每一个节点存在数组里,然后用下标访问的方式,交叉连接。/***Definitionforsingly-linkedlist.*structListNode{*intval;*

【LeetCode】2695. 包装数组

包装数组题目题解题目创建一个名为ArrayWrapper的类,它在其构造函数中接受一个整数数组作为参数。该类应具有以下两个特性:当使用+运算符将两个该类的实例相加时,结果值为两个数组中所有元素的总和当在实例上调用String()函数时,它将返回一个由逗号分隔的括在方括号中的字符串。例如,[1,2,3]示例1:输入:nums=[[1,2],[3,4]],operation="Add"输出:10解释:constobj1=newArrayWrapper([1,2]);constobj2=newArrayWrapper([3,4]);obj1+obj2;//10示例2:输入:nums=[[23,98,