【动态规划算法题记录】最长/最大 问题汇总 (leetcode)
目录
- 32. 最长有效括号
- 思路
- 代码
- 300. 最长递增子序列
- 思路
- 代码
- 674. 最长连续递增序列
- 思路1:双指针
- 代码1:双指针
- 思路2:dp
- 代码2:dp
- 718. 最长重复子数组
- 思路1:dp
- 代码1:dp
- 思路2:dp优化
- 代码2:dp优化
- 1143. 最长公共子序列
- 思路
- 代码
- 1035. 不相交的线(最大连线数)
- 思路
- 代码
- 53. 最大子序和
- 思路1:贪心
- 代码1:贪心
- 思路2:dp
- 代码2:dp
32. 最长有效括号
题目🔗
给你一个只包含 '('
和 ')'
的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())"
输出:4
解释:最长有效括号子串是 "()()"
示例 3:
输入:s = ""
输出:0
思路
首先,我们定义一个dp数组,表示以第i个元素结尾的字符串的最长有效括号的长度。
对于dp[i]
来说,它可能有以下两种情况:
s[i] == '('
:这时他是无法和前面的括号组成有效括号对的,所以dp[i] = 0
。s[i] == ')'
:这时我们需要确定它是否能和前面的元素组成有效括号对,那么还需要去观察s[i-1]
:s[i-1] == '('
:s[i-1]
刚好和s[i]
组成一对有效括号,长度为2。那么这种情况下我们可以推导出: d p [ i ] = d p [ i − 2 ] + 2 dp[i] = dp[i-2] + 2 dp[i]=dp[i−2]+2s[i-1] == ')'
:对于这种情况来说,我们不知道s[i-1]
是否和前面的元素组成有效括号,但无论如何,dp[i-1]
中存放的总是以s[i-1]
结尾的字符串的最长有效括号长度。假设s[i-1]
是有效的括号对之一,那么与他配对的括号index就是i-dp[i-1]
,于是乎我们就可以找到和s[i]
配对的位置i-dp[i-1]-1
,这样如果s[i-dp[i-1]-1] == '('
,那么s[i]
就能与他配对上。那么我们就可以推导出: d p [ i ] = d p [ i − 1 ] + 2 + d p [ i − d p [ i − 1 ] − 2 ] dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2] dp[i]=dp[i−1]+2+dp[i−dp[i−1]−2]
注意,上面要需要加上 d p [ i − d p [ i − 1 ] − 2 ] dp[i-dp[i-1]-2] dp[i−dp[i−1]−2],这是因为如果我们判定s[i-dp[i-1]-1] == '('
与s[i]
配对的话,还需要考虑s[i-dp[i-1]-1]
之前的情况。
代码
class Solution {
public:int longestValidParentheses(string s) {vector<int> dp(s.size(), 0);int ans = 0;for(int i = 1; i < s.size(); ++i){if(s[i] == ')'){// 前面一个是(的情况,直接配对成功if(s[i - 1] == '('){dp[i] = 2;// 加上前面配对的数量if(i - 2 >= 0) dp[i] += dp[i - 2];}// 前面一个也是),但是有配对的else if(dp[i - 1] > 0){// 判断匹配位置的符号是不是(,如果是则可以配对if((i - dp[i - 1] - 1) >= 0 && s[i - dp[i - 1] - 1] == '('){dp[i] = dp[i - 1] + 2;// 加上前面配对的数量if(i - dp[i - 1] - 2 >= 0) dp[i] += dp[i - dp[i - 1] - 2];}}}ans = max(ans, dp[i]);}return ans;}
};
300. 最长递增子序列
题目🔗
给你一个整数数组 nums
,找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]
是数组 [0,3,1,6,2,2,7]
的子序列。
示例 1:
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101]
,因此长度为 4
。
示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4
示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1
思路
dp[i]
表示第i个数为结尾的子序列的最长严格递增长度。
很容易的就能想到,我们要计算的dp[i]
一共有两种情况:
- nums[i] > nums[i - 1]
:此时dp[i] = dp[i-1] + 1
- nums[i] < nums[i - 1]
:此时dp[i] = dp[i-1]
但是如果我们简单的将代码写成这样:
int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(), 1);for(int i = 1; i < nums.size(); ++i){if(nums[i] > nums[i - 1])dp[i] = dp[i - 1] + 1;else dp[i] = dp[i-1];}return dp[nums.size()-1];}
当测试用例为:nums = [4,10,4,3,8,9]
。我们打印出上面代码计算出的dp数组:1 2 2 2 3 4
。可以发现并不是我们所期望的那样,当i=4
时,dp[4]
应该为2
,而不是3
。
我们计算成3
是因为:对于子数组[4,10,4,3]
来说,它的最大递增子序列为4, 10
。我们如果只是简单的判断nums[4] > nums[3]
,就执行dp[i] = dp[i - 1] + 1
,那么就相当于是把4, 10, 8
当成了最大递增子序列,然而它并不是的,所以这里就出现了判断失误。
正确的做法是,我们要把dp[i]
定义为第i
个数为结尾的子数组的最长严格递增长度,并且该最长严格递增子序列最后一个数必定是nums[i]
。
每次进行判断的时候,我们要对该子数组各个位置nums[j]
进行遍历,并比较与nums[i]
的大小,如果nums[i] > nums[j]
,那么就有dp[i] = max(dp[i], dp[j] + 1)
。
最终答案就是dp数组中最大的那个数。
代码
class Solution {
public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(), 1);int ans = 1;for(int i = 1; i < nums.size(); ++i){for(int j = 0; j < i; ++j){if(nums[i] > nums[j])dp[i] = max(dp[i], dp[j] + 1);}ans = max(ans, dp[i]);}return ans;}
};
674. 最长连续递增序列
题目🔗
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
连续递增的子序列 可以由两个下标 l
和 r
(l < r
)确定,如果对于每个 l <= i < r
,都有 nums[i] < nums[i + 1]
,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]]
就是连续递增子序列。
示例 1:
输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5]
, 长度为3
。
尽管 [1,3,5,7]
也是升序的子序列, 但它不是连续的,因为 5
和 7
在原数组里被 4
隔开。
示例 2:
输入:nums = [2,2,2,2,2]
输出:1
解释:最长连续递增序列是 [2]
, 长度为1
。
思路1:双指针
定义两个指针:int slow
和int fast
。
代码1:双指针
class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {int slow = 0;int ans = 0;while(slow < nums.size()){int fast = slow + 1;while(fast < nums.size() && nums[fast] > nums[fast - 1]){fast++;}ans = max(ans, fast - slow);slow = fast;}return ans;}
};
思路2:dp
dp的思路和上题类似。我们定义一个dp数组,dp[i]
表示第i个数为结尾的子数组的最长连续递增长度,并且该最长连续递增序列最后一个数必定是nums[i]
。
与上题不一样的就是我们不在需要遍历子数组了,直接判断nums[i]
和nums[i - 1]
的大小即可。
代码2:dp
class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {vector<int> dp(nums.size(), 1);int ans = 1;for(int i = 1; i < nums.size(); ++i){if(nums[i] > nums[i - 1]){dp[i] = max(dp[i], dp[i - 1] + 1);}ans = max(ans, dp[i]);}return ans;}
};
718. 最长重复子数组
题目🔗
给两个整数数组 nums1
和 nums2
,返回 两个数组中 公共的 、长度最长的子数组的长度 。
示例 1:
输入:nums1 = [1,2,3,2,1]
, nums2 = [3,2,1,4,7]
输出:3
解释:长度最长的公共子数组是 [3,2,1]
。
示例 2:
输入:nums1 = [0,0,0,0,0]
, nums2 = [0,0,0,0,0]
输出:5
思路1:dp
dp[i][j]
表示数组nums1
前i
个元素和数组nums2
前j
个元素的最长公共子数组的长度。其实也是和上题一样的。
代码1:dp
我们可以很快写出代码:
class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>> dp(nums1.size(), vector<int>(nums2.size(), 0));int ans = 0;// dp数组初始化for(int i = 0; i < nums1.size(); ++i){if(nums2[0] == nums1[i]) dp[i][0] = 1;if(dp[i][0] > ans) ans = dp[i][0];}for(int j = 0; j < nums2.size(); ++j){if(nums1[0] == nums2[j]) dp[0][j] = 1;if(dp[0][j] > ans) ans = dp[0][j];}// dp数组推导for(int i = 1; i < nums1.size(); ++i){for(int j = 1; j < nums2.size(); ++j){if(nums1[i] == nums2[j])dp[i][j] = dp[i - 1][j - 1] + 1;if(dp[i][j] > ans) ans = dp[i][j];}}return ans;}
};
注意初始化的时候我们也要去更新ans的大小,不然会漏结果。
思路2:dp优化
其实,我们可以将dp[i][j]
定义为数组nums1
前i-1
个元素和数组nums2
前j-1
个元素的最长公共子数组的长度,也就是在nums1前增加一行,nums2前增加一列:
这样我们在定义数组的时候就已经初始化好了,不必额外去for循环初始化:vector<vector<int>> dp (nums1.size() + 1, vector<int>(nums2.size() + 1, 0));
代码2:dp优化
class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>> dp(nums1.size() + 1, vector<int>(nums2.size() + 1, 0));int ans = 0;// dp数组推导for(int i = 1; i <= nums1.size(); ++i){for(int j = 1; j <= nums2.size(); ++j){if(nums1[i - 1] == nums2[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;if(dp[i][j] > ans) ans = dp[i][j];}}return ans;}
};
1143. 最长公共子序列
题目🔗
给定两个字符串 text1
和 text2
,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0
。
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
例如,"ace"
是 "abcde"
的子序列,但 "aec"
不是 "abcde"
的子序列。
两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。
示例 1:
输入:text1 = "abcde", text2 = "ace"
输出:3
解释:最长公共子序列是 "ace"
,它的长度为 3
。
示例 2:
输入:text1 = "abc", text2 = "abc"
输出:3
解释:最长公共子序列是 "abc"
,它的长度为 3
。
示例 3:
输入:text1 = "abc", text2 = "def"
输出:0
解释:两个字符串没有公共子序列,返回 0
。
思路
这题和上题的不同之处在于 公共子序列和原字符串是相对有序的。感觉这题有点像300. 最长递增子序列和718. 最长重复子数组的结合体。
上一题以i-1
和j-1
是因为子数组必须要求是连续的,如果不连续,公共子数组直接归零,下一个子数组不能继承前一个子数组的公共子数组长度。
子序列则不一样,允许中间有间隔,下一个子序列可以继承前一个子序列的公共子序列长度。
这样说很抽象,我们举个例子。比如说两个数组nums1 = [1,2,3,4,5]
, nums2 = [1,2,3,8,5]
。在index=3
的时候出现分歧了,如果是公共子数组,到index=3
时,其公共子数组必须要归零,如果不归零,会影响index=4
的判断。而如果是公共子序列,index=3
可以保留index=2
的最长子序列数,继而在index=4
时继续递增。
代码
class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int len1 = text1.size();int len2 = text2.size();vector<vector<int>> dp(len1 + 1, vector<int>(len2 + 1, 0));for(int i = 1; i <= len1; ++i){for(int j = 1; j <= len2; ++j){if(text1[i - 1] == text2[j - 1]){dp[i][j] = dp[i - 1][j - 1] + 1;}else{dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[len1][len2];}
};
1035. 不相交的线(最大连线数)
题目🔗
在两条独立的水平线上按给定的顺序写下 nums1
和 nums2
中的整数。
现在,可以绘制一些连接两个数字 nums1[i]
和 nums2[j]
的直线,这些直线需要同时满足:
nums1[i] == nums2[j]
- 且绘制的直线不与任何其他连线(非水平线)相交。
请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。
以这种方法绘制线条,并返回可以绘制的最大连线数。
示例 1:
输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。 但无法画出第三条不相交的直线,因为从 nums1[1]=4
到 nums2[2]=4
的直线将与从 nums1[2]=2
到 nums2[1]=2
的直线相交。
示例 2:
输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
输出:3
示例 3:
输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
输出:2
思路
和1143. 最长公共子序列一模一样。
代码
class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {int len1 = nums1.size();int len2 = nums2.size();vector<vector<int>> dp(len1 + 1, vector<int>(len2 + 1, 0));for(int i = 1; i <= len1; ++i){for(int j = 1; j <= len2; ++j){if(nums1[i - 1] == nums2[j - 1]){dp[i][j] = dp[i - 1][j - 1] + 1;}else{dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[len1][len2];}
};
53. 最大子序和
题目🔗
给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1]
的和最大,为 6
。
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [5,4,-1,7,8]
输出:23
思路1:贪心
因为数组中包含负数,所以会拉低连续子数组的和,甚至变为负数,这个时候就说明从前面计算到这里的负数,再继续计算下去肯定只会越来越小,所以我们要放弃前面的元素,从下一个元素开始重新计算。每次计算的时候我们都要记录更大的连续和,最后得到的就是全局最优的最大连续和。
代码1:贪心
class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for(int i = 0; i < nums.size(); i++) {count += nums[i];if(count > result) result = count;if(count <= 0) count = 0;}return result;}
};
思路2:dp
dp[i]
表示以nums[i-1]
为结尾的最大子数组的和为dp[i]
。
对于每个dp[i]
都有两种情况:
nums[i-1]
加入到前面的子数组中,也就是dp[i] = dp[i - 1] + nums[i - 1]
nums[i-1]
不加入到前面的子数组中,从它这里重新开始计算和,也就是dp[i] = numd[i - 1]
- 我们取最大的值:
dp[i] = max(nums[i - 1], dp[i - 1] + nums[i - 1])
代码2:dp
class Solution {
public:int maxSubArray(vector<int>& nums) {vector<int> dp(nums.size() + 1, 0);int ans = INT_MIN;for(int i = 1; i <= nums.size(); ++i){dp[i] = max(nums[i - 1], dp[i - 1] + nums[i - 1]);if(dp[i] > ans) ans = dp[i];}return ans;}
};
相关文章:
![](https://i-blog.csdnimg.cn/direct/28df4526282749f088d6a15e1458aa28.png)
【动态规划算法题记录】最长/最大 问题汇总 (leetcode)
目录 32. 最长有效括号思路代码 300. 最长递增子序列思路代码 674. 最长连续递增序列思路1:双指针代码1:双指针思路2:dp代码2:dp 718. 最长重复子数组思路1:dp代码1:dp思路2:dp优化代码2&#x…...
![](https://i-blog.csdnimg.cn/direct/233982fbf8eb425699afdc2bdb2f71a9.png)
2020 位示图
2020年网络规划设计师上午真题解析36-40_哔哩哔哩_bilibili 假设某计算机的字长为32位,该计算机文件管理系统磁盘空间管理采用位示图(bitmap),记录磁盘的使用情况。若磁盘的容量为300GB,物理块的大小为4MB,…...
![](https://www.ngui.cc/images/no-images.jpg)
富格林:防止陷入黑幕欺诈平台
富格林指出,不少投资者因未做好投资准备而不慎误入黑幕欺诈平台,造成了不必要的亏损。投资者在投资前,需要时刻保持警惕,根据市场行情,作出有依据的投资决定,而不是依赖黑幕欺诈平台的噱头进行投资。建议投…...
![](https://www.ngui.cc/images/no-images.jpg)
Cookie、Session 、token
Cookie 优点: 简单易用: 浏览器自动管理 Cookie 的发送和接收。持久性: 可以设置过期时间,使其可以在浏览器关闭后依旧存在。广泛支持: 所有现代浏览器都支持 Cookie。 缺点: 安全性问题: 存储在客户端,容易被查看和篡改。敏感信息不应直接存储在 Co…...
![](https://www.ngui.cc/images/no-images.jpg)
Json-类型映射使用TypeFactory或者TypeReference
当你需要将JSON数据转换为Java中的复杂类型时,可以使用Jackson库中的TypeFactory或 者TypeReference。这两种方式可以帮助你处理复杂的泛型类型,例如 List<Map<String, Object>> 或者 Map<String, List<Object>>。 示例 1: 使用 TypeFactory 和 T…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)
0 前言 在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、选取等特定工作。 在Linux中提供很多数据处理命令,如果我们要以行为单位进行数据处理,可以使用sed。 1 sed 的帮助信息,功能ÿ…...
![](https://i-blog.csdnimg.cn/direct/7f2c90b14d574cc2b22d746137b51026.png)
内网渗透之icmp隧道传输
原理 # 为什么要建立隧道 在实际的网络中,通常会通过各种边界设备软/硬件防火墙、入侵检测系统来检查对外连接的情况,如果发现异常,会对通信进行阻断。 # 什么是隧道 就是一种绕过端口屏蔽的方式,防火墙两端的数据包通过防火墙…...
![](https://i-blog.csdnimg.cn/direct/a41ed43455584c69b0b8f07b82b70c74.png)
【C++ 第十五章】map 和 set 的封装(封装红黑树)
1. map 和 set 的介绍 ⭐map 与 set 分别是STL中的两种序列式容器; 它们是一种树形数据结构的容器,且其的底层构造为一棵红黑树; 而在上一篇文章中提到,其实红黑树本身就是一棵二叉搜索树,是基于二叉搜索树的性质对其增加了平衡的属性来提高其综合性能 ⭐当然也…...
![](https://i-blog.csdnimg.cn/direct/36ceef679cbc433cb22e4608e70eb89a.png)
LIN通讯
目录 1 PLinApi.h 2 TLINFrameEntry 结构体 3 自定义函数getTLINFrameEntry 4 TLINScheduleSlot 结构体 5 自定义函数 getTLINScheduleSlot 6 自定义LIN_SetScheduleInit函数 7 自定义 LIN_StartSchedule 8 发送函数 9 线程接收函数 1 PLinApi.h 这是官方头文件 ///…...
![](https://i-blog.csdnimg.cn/direct/e58653031ebd4f949a05059338983f5f.png)
zabbix常见架构及组件
Zabbix作为一个开源的、功能全面的监控解决方案,广泛应用于各类组织中,以实现对网络、服务器、云服务及应用程序性能的全方位监控。部署架构灵活性高,可支持从小型单一服务器环境到大型分布式系统的多种场景。基本架构通常包括监控端…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
plsql表格怎么显示中文 plsql如何导入表格数据
在Oracle数据库开发中,PL/SQL Developer是一款广泛使用的集成开发环境(IDE),它提供了丰富的功能来帮助开发人员高效地进行数据库开发和管理。在使用PL/SQL Developer时,许多用户会遇到表格显示中文的问题,以…...
![](https://i-blog.csdnimg.cn/direct/54d7c61f0ce84847bc892ba5a00b3b4a.png)
chromedriver下载地址大全(包括124.*后)以及替换exe后仍显示版本不匹配的问题
Chrome for Testing availability CNPM Binaries Mirror 若已经更新了系统环境变量里的chromdriver路径下的exe,仍显示版本不匹配: 则在cmd界面输入 chromedriver 会跳出version verison与刚刚下载好的exe不匹配,则再输入: w…...
![](https://www.ngui.cc/images/no-images.jpg)
拦截器实现 Mybatis Plus 打印含参数的 SQL 语句
1.实现拦截器 package com.sample.common.interceptor;import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import or…...
![](https://www.ngui.cc/images/no-images.jpg)
Oracle Subprogram即Oracle子程序
Oracle Subprogram,即Oracle子程序,是Oracle数据库中存储的过程(Procedures)和函数(Functions)的统称。这些子程序是存储在数据库中的PL/SQL代码块,用于执行特定的任务或操作。下面详细介绍Orac…...
![](https://i-blog.csdnimg.cn/direct/7177f6e837be4421a6d71da2dd677fcc.png)
自然语言处理实战项目30-基于RoBERTa模型的高精度的评论文本分类实战,详细代码复现可直接运行
大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目30-基于RoBERTa模型的高精度的评论文本分类实战,详细代码复现可直接运行。RoBERTa模型是由 Facebook AI Research 和 FAIR 的研究人员提出的一种改进版的 BERT 模型。RoBERTa 通过采用更大的训练数据集、动态掩码机…...
![](https://img-blog.csdnimg.cn/img_convert/69403ac1319a5ec55559cf04833b9317.png)
RK3588J正式发布Ubuntu桌面系统,丝滑又便捷!
本文主要介绍瑞芯微RK3588J的Ubuntu系统桌面演示,开发环境如下: U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.160 Ubuntu:Ubuntu20.04.6 LinuxSDK: rk3588-linux5.10-sdk-[版本号] (基于rk3…...
![](https://i-blog.csdnimg.cn/direct/8d671ac25eaf445b988349759c0b6c19.png)
基于GPT-SoVITS的API实现批量克隆声音
目标是将每一段声音通过GPT-SoVITS的API的API进行克隆,因为拼在一起的整个片段处理会造成内存或者缓存溢出。 将目录下的音频文件生成到指定目录下,然后再进行拼接。 通过AI工具箱生成的数据文件是这样的结构,temp目录下是没个片段生成的部分,connect_是正常拼接的音频文件…...
![](https://img-blog.csdnimg.cn/img_convert/850042f80baf18aef706763aea8424ba.png)
详解华为项目管理,附华为高级项目管理内训材料
(一)华为在项目管理中通过有效的沟通、灵活的组织结构、坚持不懈的努力、细致的管理和科学的考核体系,实现了持续的创新和发展。通过引进先进的管理模式,强调以客户需求为导向,华为不仅优化了技术管理和项目研发流程&a…...
![](https://www.ngui.cc/images/no-images.jpg)
Perl(Practical Extraction and Reporting Language)脚本
Perl(Practical Extraction and Reporting Language)是一种非常灵活的脚本语言,主要用于文本处理、系统管理以及快速原型开发等领域。Perl 脚本可以用来执行一系列任务,包括文件操作、网络通信、数据处理等。 下面是一些关于编写…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fi.loli.net%2F2021%2F10%2F12%2F4kVzZ6mKBNsPdy3.png&pos_id=img-fXOkCyZV-1724216570558)
单例模式详细
文章目录 单例模式介绍八种方式1、饿汉式(静态常量)2、饿汉式(静态代码块)3、懒汉式(线程不安全)4、懒汉式(线程安全,同步方法)5、懒汉式(线程不安全…...
![](https://i-blog.csdnimg.cn/direct/620cb347e3064d71b90cf80c2f69f00b.png#pic_center)
Unity3D 自定义窗口
Unity3D 自定义窗口的实现。 自定义窗口 Unity3D 可以通过编写代码,扩展编辑器的菜单栏和窗口。 简单的功能可以直接一个菜单按钮实现,复杂的功能就需要绘制一个窗口展示更多的信息。 编辑器扩展的脚本,需要放在 Editor 文件夹中。 菜单栏…...
![](https://i-blog.csdnimg.cn/direct/300ebc8d0eb143629bb75e7f63c85e30.png)
dubbo:dubbo整合nacos实现服务注册中心、配置中心(二)
文章目录 0. 引言1. nacos简介及安装2. 注册中心实现3. 配置中心实现4. 源码5. 总结 0. 引言 之前我们讲解的是dubbozookeeper体系来实现微服务框架,但相对zookeeper很多企业在使用nacos, 并且nacos和dubbo都是阿里出品,所以具备一些天生的契合性&#…...
![](https://www.ngui.cc/images/no-images.jpg)
个人博客指路
Pudding 个人博客 比较懒,直接 github page 了,没国内代理加速。 欢迎大佬们,踩一踩 没做留言,觉得很鸡肋。有问题可以在本文底下评论、或者直接邮件...
![](https://i-blog.csdnimg.cn/direct/38702d5bc8b349b39c65fc861fbb2546.png)
【STM32 HAL】多串口printf重定向
【STM32 HAL】多串口printf重定向 前言单串口printf重定向原理实现CubeMX配置Keil5配置 多串口printf重定向 前言 在近期项目中,作者需要 STM32 同时向上位机和手机发送数据,传统的 printf 重定向只能输出到一个串口。本文介绍如何实现 printf 同时输出…...
![](https://img-blog.csdnimg.cn/img_convert/dbd60d15ab53239ab4f2d3c11c52aae6.png)
帆软报表,达梦数据库驱动上传失败
1、按照正常操作新建数据库连接,上传准备好的达梦驱动时,提示如图一需要修改SystemConfig.driverUpload为true才可以。 2、FineDB存储了数据决策系统中除平台属性配置以外的所有信息。详情请参见: FineDB 数据库简介。 3、因此管理员可通过…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS选择器的优先级是如何确定的?有哪些方法可以提高选择器的效率?
CSS选择器的优先级是如何确定的? CSS选择器的优先级决定了当多个选择器同时应用于一个元素时,哪个选择器将最终生效。CSS选择器的优先级由多个因素决定,主要包括以下几个方面: 特殊性(Specificity) 特殊性…...
![](https://www.ngui.cc/images/no-images.jpg)
【MySQL】基础入门(第二篇)
1.MySQL基本数据类型 数值类型 MySQL 支持所有标准 SQL 数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是D…...
![](https://i-blog.csdnimg.cn/direct/ec33eaf8a0b248fc9cea77835cf9f344.jpeg)
勇闯机器学习(第二关-数据集使用)
以下内容,皆为原创,重在无私分享高质量知识,制作实属不易,请点点关注。 好戏开场了~~~(这关涉及到了加载数据集的代码,下一关,教你们安装机器学习库) 一.数据集 这一关的目标 知道数据集被分为训练集和测…...
![](https://i-blog.csdnimg.cn/direct/1ec3df83882747a0a450865c8f7665f8.jpeg#pic_center)
数据库学习(进阶)
数据库学习(进阶) Mysql结构:连接层:服务层(核心层):存储引擎层:系统文件层: 存储引擎(概述):存储引擎特点:InnoDB存储引擎:(为并发条…...
![](https://www.ngui.cc/images/no-images.jpg)
redis的数据结构——跳表(Skiplist)
跳表(Skiplist)是一种用于有序数据存储的高效数据结构,它在Redis中用于实现有序集合(Sorted Set,zset)的底层存储。当有序集合中的数据较多时,Redis会选择使用跳表来存储元素,以便在保持数据有序的同时提供高效的插入、删除、查找操作。 跳表的基本结构 跳表是一种多…...
![](/images/no-images.jpg)
软件下载网站怎么做/市场营销在线课程
Android不允许在子线程中进行UI的操作,但是有些时候我们确实需要在子线程中执行一些耗时的任务来更新UI,这时候就需要用到解析异步消息处理机制来完成操作。 异步消息处理包括: MessageHandlerMessageQueueLooper 该文章主要介绍Message和Ha…...
![](/images/no-images.jpg)
上海的网站公安备案查询系统/东莞seo公司
from pathlib import Path FILE Path(__file__).absolute() sys.path.append(FILE.parents[0].as_posix())...
![](https://img-blog.csdnimg.cn/011ac44a31754607a9db9d57388db44f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6IOW5ZOl546L6ICB5biI,size_8,color_FFFFFF,t_70,g_se,x_16#pic_center)
上海做网站的公司电话/seo专家招聘
前文回顾 《物联网系统RT-Thread学习—开发环境搭建》 《物联网系统RT-Thread学习—内核学习》 本集预告 本次来介绍一下RTT下面的IO设备驱动开发。具体内容可以学习官方文档,内容完备,并附带例子程序 I/O设备模型 这里就不再去复制粘贴了࿰…...
![](http://pic002.cnblogs.com/images/2010/133128/2010113015530648.png)
长沙知名网站推广/seo优缺点
最近在网上看到一篇介绍android window的requestWindowFeature()的使用方法,共享出来大家学习学习 requestWindowFeature(Window.FEATURE_LEFT_ICON);setContentView(R.layout.dialog_activity);getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,…...
![](/images/no-images.jpg)
判断网站做的好坏/推广一单500
安全提示“X-Frame-Options头未设置”的解决方法参考文章: (1)安全提示“X-Frame-Options头未设置”的解决方法 (2)https://www.cnblogs.com/guo2001china/p/10738751.html (3)https://www.c…...
![](/images/no-images.jpg)
个人网站cms系统/seod的中文意思
workbook xlrd.open_workbook(rF:\)#获取所有sheetworkbook.sheet_names() 返回一个列表#根据sheet索引或者名称获取sheet内容sheet2 workbook.sheet_by_index(1)sheet2 workbook.sheet_by_name(sheet2)#获取sheet2的名称,行数,列数sheet2.name,sheet…...