当前位置: 首页 > news >正文

HOT100打卡—day10—【DP+多维DP】—最新8.29(剩6题)

DP


1 70. 爬楼梯

70. 爬楼梯

一次做,AC代码:

疑问:怎么判断用搜索还是dp?这题,我没有受过dp训练所以第一反应是用dfs搜索,找到所有符合要求的叶子。

class Solution {
public:int dp[50];    // step1:含义: 对于下标i  有多少种方案到第i层/*step2:状态转移方程 dp[i] = dp[i-2] + dp[i-1]step3: dp数组初始化 dp[1] = 1 , dp[2] = 2step4: 遍历顺序 i递增step5: 模拟 1,2,3(1 1 1 + 2 1 +1 2 ),5*/ int climbStairs(int n) {// 这题我的第一感觉是搜索 什么时候用dp????dp[1] = 1;dp[2] = 2;for(int i = 3; i <= n; i++)dp[i] = dp[i-1] + dp[i-2];return dp[n];}
};

2 118. 杨辉三角

118. 杨辉三角

简单,AC:

class Solution {
public:vector<vector<int>> ans;vector<vector<int>> generate(int numRows) {vector<int> tmp;tmp.push_back(1);ans.push_back(tmp);if(numRows == 1)return ans;tmp.clear();tmp.push_back(1);tmp.push_back(1);ans.push_back(tmp);if(numRows == 2)return ans;for(int i = 3; i <= numRows;i++){tmp.clear();tmp.push_back(1);for(int j = 0; j < ans[ans.size()-1].size()-1;j++){tmp.push_back(ans[ans.size()-1][j] + ans[ans.size()-1][j + 1]);}tmp.push_back(1);ans.push_back(tmp);}return ans;}
};

3 198. 打家劫舍

198. 打家劫舍

就按照五部曲思考,AC代码:

class Solution {
public:int dp[120]; // 从左往右偷  偷到第i个房子(不包含本房子)时候已经赚了的最多钱/*dp[i] = max(dp[i-1] + 0,dp[i-2]+nunms[i-2])dp[0] = 0dp[1] = 0升序模拟 样例2=== 0 0 2 7 11*/int rob(vector<int>& nums) {dp[0] = 0;dp[1] = 0;if(nums.size() == 1)return nums[0];int i = 2;for(; i < nums.size();i++)dp[i] = max(dp[i-1] + 0,dp[i-2]+nums[i-2]);return max(dp[i-1] + nums[i - 1],dp[i-2]+nums[i-2]);  // 这里的return 和状态转移方程不太一样}
};

4 279. 完全平方数

279. 完全平方数

之前没学多重背包之前看到题目是蒙的,现在学完完全背包很自然就做出来了,AC代码:

class Solution {
public:int dp[10010];  // dp[1]表示 凑成i的完全平方数最少需要的数目/*转成完全背包物品:i = 1....sqrt(n)背包:ndp[j] = min(dp[j- i]+1,dp[j])装i   不撞idp[0] = 0 其他非0下标全设为INT_MAXi++j++模拟——*/int numSquares(int n) {dp[0] = 0;for(int j = 1; j <= n; j++)dp[j] = INT_MAX;for(int i = 1; i*i <= n; i++){for(int j = 0; j <= n; j++){if(j >= i*i)dp[j] = min(dp[j- i*i]+1,dp[j]);else dp[j] = dp[j];}// for(int j = 0; j <= n; j++) cout << dp[j] << ' ';// puts("");}return dp[n];}
};

5 518. 零钱兑换 II + 322. 零钱兑换

518. 零钱兑换 II

根据上面学的理论,一次AC代码:

class Solution {
public:int dp[5005];   // 能正好装满i的背包的方式数目/*dp[j] += dp[j - coins[i]];dp[0] = 1;i++ j++模拟——*/int change(int amount, vector<int>& coins) {dp[0] = 1;for(int i = 0; i < coins.size(); i++)for(int j = 0; j <= amount; j++)if(j >= coins[i])dp[j] += dp[j - coins[i]];return dp[amount];}
};

322. 零钱兑换

类似的一题:

class Solution {
public:long long dp[10005];   // 能正好装满i的背包的最少硬币个数/*dp[j] = min(dp[j],dp[j - coins[i]] + 1)不装i  装idp[0] = 0;其他非0下标初始化为INT_MAXi++ j++模拟——0 1 2 3 4 5 6 7 8 9 10 11 0 1 1 2 2 3 3 4 4 5 5 6 0 1 1 2 2 1 2 2 3 3 2 3 */int coinChange(vector<int>& coins, int amount) {dp[0] = 0;for(int i = 1; i <= amount; i++)dp[i] = INT_MAX;for(int i = 0; i < coins.size(); i++){for(int j = 0; j <= amount; j++)if(j >= coins[i])dp[j] = min(dp[j],dp[j - coins[i]] + 1);// for(int j = 0; j <= amount; j++)cout << dp[j] << ' ';// cout << endl;}if(dp[amount] == INT_MAX)return -1;else return dp[amount];}
};

6 139. 单词拆分

139. 单词拆分

做了很久...估计2h 一开始我的思路卡死了 + 看题解之后的思路的详解见注释,

我的写法和carl 答案在一些微小的细节上略有不同,我的更好理解,但他的解法更简单。

我写的过程中,需要注意下标和字符串大小的关系要不要+1-1,而且dp[] 需要从1开始到n有意义,dp[0] 不管它。不可以只有0,...,n-1 这样会忽略s = "a" Dict = ["b"] 这样的样例,因为dp[0] 恒为1。

AC代码:

class Solution {
public://多重背包且排列/*一开始我的思路——物品:字典里面str背包:容量为?的背包  求装满时候的情况dp[wordDict.size()][s.size()]如果n = wordDict.size() m = s.size()  又感觉要考虑每个字符和Dict中每个字符串的关系 很麻烦        *//*看了题解,才知道我纠结的地方 每个字符和Dict中每个字符串的关系 很麻烦,但其实可以用substr函数考虑背包的s的子串和Dict中每个字符串来比较,这样就变得很简单了。而且之前思考时候不知道dp[]存的值要是int还是char什么东西其实就题目结果反推,dp[] = trur/flase*/bool dp[310];   //以i结尾的字符串是否可以利用字典中出现的单词拼接出来/*dp[j] = dp[j - wordDict[i].size()] && substr(s,j - wordDict[i].size(),wordDict[i].size()) == wordDict[i];dp[0] = 1;多重背包+排列背包j++ 物体i++模拟——6 7 8 9 10 11j = 11 size = 5 dp[6]*/bool wordBreak(string s, vector<string>& wordDict) {dp[0] = 1;bool tmp[100][100];for(int j = 0; j <= s.size();j++){for(int i = 0; i < wordDict.size();i++){if(j == wordDict[i].size())  // 能装下一个dp[j] =  (s.substr(j  - wordDict[i].size(),wordDict[i].size()) == wordDict[i]) || dp[j];else if(j > wordDict[i].size() )    // 能至少装2个 dp[j] = dp[j  - wordDict[i].size()] && (s.substr(j - wordDict[i].size(),wordDict[i].size()) == wordDict[i]) || dp[j];}}// for(int i = 0; i < wordDict.size();i++)// {//     for(int j = 0; j < s.size();j++)//         cout << tmp[i][j] << ' ';//     cout << endl;// }return dp[s.size() ];}
};

7

8

9 01背包应用题——416. 分割等和子集

416. 分割等和子集

一开始看到题目,想用贪心——排序+双指针 每次都把当前相对小的放进小的sum中,写完之后发现过不了:[1,1,2,2]这样的样例。错误代码:

class Solution {
public:/*左边的sum 小于 右边的sum l++,左边的sum+=左边的sum 大于 同理如果等于左边前进 1,2,3,4, 5,6,7,8,9, 10*/bool canPartition(vector<int>& nums) {// 解法1:排序+双指针if(nums.size() == 1)return 0;sort(nums.begin(),nums.end());int l = 0;int r = nums.size() - 1;int leftsum = 0;int rightsum = 0;while(l <= r){if(leftsum <= rightsum){leftsum += nums[l++];}else{rightsum += nums[r--];}}cout << l << "  " << r << endl;cout << leftsum << "  " << rightsum;if(leftsum == rightsum)return 1;else return 0;}
};

要明确本题中我们要使用的是01背包,因为元素我们只能用一次。

回归主题:首先,本题要求集合里能否出现总和为 sum / 2 的子集。

那么来一一对应一下本题,看看背包问题如何来解决。

只有确定了如下四点,才能把01背包问题套到本题上来。

  • 背包的体积为sum / 2
  • 背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值
  • 背包如果正好装满,说明找到了总和为 sum / 2 的子集。
  • 背包中每一个元素是不可重复放入。

具体分析过程见注释, AC代码:

class Solution {
public:// 找到一个背包 能够装nums.total(所有物体重量总和)/2的东西int dp[10005];    // 容积为i的背包 根据现有的物体重量情况最多能装的物体的重量/*转换成01背包问题:假设有一个nums.total/2的背包有若干个物体,每个物体的重量就是nums[i] 本题可以舍弃价值这个概念就是问一个nums.total/2的背包最多能够装的物体的重量是多少 能不能达到nums.total/2if(j < nums[i])dp[j] = dp[j];else dp[j] = max(dp[j] , dp[j - nums[i]]+nums[i]);dp[0] = 0;其他默认是0for物体i++ for容积j--模拟——*/bool canPartition(vector<int>& nums) {dp[0] = 0;int total = 0;for(auto i : nums)total += i;if(total % 2 == 0)total /= 2;else return 0;for(int i = 0; i < nums.size();i++){for(int j = total ; j >= 0; j--){if(j < nums[i])dp[j] = dp[j];else dp[j] = max(dp[j] , dp[j - nums[i]]+nums[i]);}}if(dp[total] == total)return 1;else return 0;}
};

10

多维DP


1 62. 不同路径

62. 不同路径

自己试着写写,二维dp数组,还是五步曲,AC代码:

class Solution {
public:int dp[105][105];//  (i,j) 表示到达这个格子最多几条不同的路径/*状态转移:dp[i][j] = dp[i-1][j] + dp[i][j-1];dp数组初始化(初始化 第一行和第一列)dp[0][0] = 0dp[0][x] = 1dp[x][0] = 1顺序:for(i++)中for(j++)模拟一下2*30 1 11 2 3*/int uniquePaths(int m, int n) {// 原来 用dp 不用搜索 是因为怕超时dp[0][0] = 0;for(int i = 1; i < n; i++)dp[0][i] = 1;for(int i = 1; i < m; i++)dp[i][0] = 1;for(int i = 1; i < m;i++)for(int j = 1; j < n; j++)dp[i][j] = dp[i-1][j] + dp[i][j-1];if(m == 1 && n == 1)return 1;  // 特殊处理return dp[m-1][n-1];}
};

1.2 63. 不同路径 II(有障碍物版本的上一题)

63. 不同路径 II

有障碍物就是加一堆if-else ,自己写的 ,然后debug半天很多边界通过反复提交才试出来,比如:

if(m == 1 && n == 1)return obstacleGrid[0][0] ^ 1;  // 因为dp[0]设置为0  所以要特殊处理

if(obstacleGrid[0][0] || obstacleGrid[n-1][m-1] || dp[n-1][m-1] == -1)return 0;  //特殊处理起点有障碍物 、终点有障碍物、 终点不可达(三种情况)

AC代码:

class Solution {
public:int dp[105][105];//  (i,j) 表示到达这个格子最多几条不同的路径 -1表示不可达/*状态转移:if(obs[i-1][j] == 0 && dp[i-1][j] != -1)  // 上一个不是障碍物且可达dp[i][j] += dp[i-1][j]if(obs[i][j-1] == 0 && dp[i][j-1] != -1)  // 左边一个不是障碍物且可达dp[i][j] += dp[i][j-1]if((obs[i-1][j] == 1 || dp[i-1][j] == -1) && (obs[i][j-1] == 1 || dp[i][j-1] == -1))if(obstacleGrid[i][j])  // 两个都不能达到我 或者我本身是障碍物dp[i][j] = -1dp数组初始化(初始化 第一行和第一列)dp[0][0] = 0dp[0][x] = 1 这一行第一个障碍物 后面的格子都不可达 设为-1dp[x][0] = 1 这一列第一个障碍物 下面的格子都不可达 设为-1顺序:for(i++)中for(j++)模拟一下3*30  1  11  -1 11  1  1*/int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {dp[0][0] = 0;int n = obstacleGrid.size();   // 行int m = obstacleGrid[0].size();int x = 1;for(int i = 1; i < n; i++){if(obstacleGrid[i][0] == 1)x = -1;dp[i][0] = x;}x = 1;for(int i = 1; i < m; i++){if(obstacleGrid[0][i] == 1)x = -1;dp[0][i] = x;}for(int i = 1; i < n;i++)for(int j = 1; j < m; j++){if(obstacleGrid[i-1][j] == 0 && dp[i-1][j] != -1)dp[i][j] += dp[i-1][j];if(obstacleGrid[i][j-1] == 0 && dp[i][j-1] != -1)dp[i][j] += dp[i][j-1];if((obstacleGrid[i-1][j] == 1 || dp[i-1][j] == -1) && (obstacleGrid[i][j-1] == 1 || dp[i][j-1] == -1)) // 两个都满dp[i][j] = -1;if(obstacleGrid[i][j])dp[i][j] = -1;}for(int i = 0; i < n; i++){for(int j = 0; j < m; j++)cout << dp[i][j] << " ";cout << endl;}if(m == 1 && n == 1)return obstacleGrid[0][0] ^ 1;  // 因为dp[0]设置为0  所以要特殊处理if(obstacleGrid[0][0] || obstacleGrid[n-1][m-1] || dp[n-1][m-1] == -1)return 0;  //特殊处理起点有障碍物 、终点有障碍物、 终点不可达return dp[n-1][m-1];}
};

看了题解,思路差不多,就是它遇到障碍dp[i][j]保持0,然后状态转移方程就可以写的很简单。

直接复制粘贴的代码:

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍,直接返回0return 0;vector<vector<int>> dp(m, vector<int>(n, 0));for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) dp[i][0] = 1;for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) dp[0][j] = 1;for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (obstacleGrid[i][j] == 1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
};

2 64. 最小路径和

64. 最小路径和

和62.不同路径差不多。

AC代码:

class Solution {
public:int dp[210][210]; // (i,j)表示从起点出发到(i,j)的路径数字总和最小的数/*dp[i][j] = min(d[i-1][j]+grid[i][j] , d[i][j-1]+grid[i][j])dp[0][0] = grid[0][0]dp[0][j] += grid[0][j]dp[i][0] += grid[i][0]i++j++*/int minPathSum(vector<vector<int>>& grid) {int n = grid.size();int m = grid[0].size();dp[0][0] = grid[0][0];for(int j = 1; j < m; j++)dp[0][j] = dp[0][j-1]+grid[0][j];for(int i = 1;i < n; i++)dp[i][0] = dp[i-1][0]+grid[i][0];for(int i = 1; i < n; i++)for(int j = 1; j < m; j++ )dp[i][j] = min(dp[i-1][j]+grid[i][j] , dp[i][j-1]+grid[i][j]);return dp[n-1][m-1];}
};

3

4

5

相关文章:

HOT100打卡—day10—【DP+多维DP】—最新8.29(剩6题)

DP 1 70. 爬楼梯 70. 爬楼梯 一次做&#xff0c;AC代码&#xff1a; 疑问&#xff1a;怎么判断用搜索还是dp&#xff1f;这题&#xff0c;我没有受过dp训练所以第一反应是用dfs搜索&#xff0c;找到所有符合要求的叶子。 class Solution { public:int dp[50]; // step1&a…...

【不会用这个工具,你的Linux服务器就是个摆设!】

01 Tcpdump Tcpdump 是一个强大的网络监控工具&#xff0c;它允许用户有效地过滤网络上的数据包和流量。 这可以获得有关 TCP/IP 和网络上传输的数据包的详细信息。 当你遇到网络协议问题一筹莫展的时候&#xff0c;这时候往往可以通过tcpdump来看网络的通讯过程中发生了什么…...

09 生产者分区机制

kafka如何保证消息的有序 可以通过key-ording策略解决。kafka可以为每条消息定义消息键&#xff0c;也称为key&#xff0c;通常是带有业务属性的比如用户id之类的。有相同消息键的消息会被发到同一个分区。下面实现了key-ordering策略&#xff0c;对key的hashcode进行取模来决…...

亚马逊鲲鹏系统是怎么操作测评的

亚马逊鲲鹏系统可以注册亚马逊买家号、养号、下单留评等&#xff0c;是一款功能比较齐全的测评软件&#xff0c;具体操作如下&#xff1a; 首先我们需要先准备好买家账号&#xff0c;账号可以直接去购买已经注册好了的账号&#xff0c;也可以准备好账号所需要的一些邮箱、ip、…...

电脑上的视频如何导入苹果手机?

AirDroid支持Windows、macOS、android、iOS相互传输文件、视频、图片等。 想要从电脑传输文件到iPhone也很简单&#xff0c;在电脑和iPhone都安装AirDroid&#xff0c;连接同一网络&#xff0c;然后登录同一个帐号就可以了。可绑定的iPhone数量不限&#xff0c;只要都登录同一…...

tsmc standard cell命名规则

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 CKMUX2代表二输入clock mux&#xff0c;D2代表驱动强度X2&#xff0c;6T代表row高为6track&#xff0c;16P96C代表gate length和poly pitch&#xff0c;LVT就是low voltage thr…...

基于ssm医院在线挂号预约系统源码和论文

基于ssm医院在线挂号预约系统源码和论文072 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 课题研究的目的及意义&#xff1a; 专家号难求&#xff0c;是医院现场挂号存在的主要问题之一&#xff0c;每一名专…...

mysql binlog 浅谈

如何开启MySQL的binlog日志 在MySQL中&#xff0c;binlog指的是binary log&#xff0c;二进制日志文件。这个文件记录了MySQL所有的DML操作。通过binlog日志&#xff0c;我们可以做数据恢复&#xff0c;做主从复制等等。对于运维或架构人员来说&#xff0c;开启binlog日志功能…...

three.js(八):内置的三维几何体

三维几何体 BoxGeometry 立方体TetrahedronGeometry 四面体OctahedronGeometry 八面体DodecahedronGeometry 十二面体IcosahedronGeometry 二十面体PolyhedronGeometry 多面体SphereGeometry 球体ConeGeometry 圆锥CylinderGeometry 圆柱TorusGeometry 三维圆环TorusKnotGeomet…...

IDEA 性能优化

前言 IDEA 基于JVM&#xff0c;是内存紧张型的应用&#xff0c;即使是16GB内存也很一般。 机器配置&#xff1a; win10 proi7-4720hq 3.2G 4c8tddr3-1600IDEA 2023.2.1 本文优化在不升级硬件的前提下使用 优化 调整JVM堆内存及GC IDEA 自身的JVM运行时配置&#xff0c;启动…...

react 获取表单中输入框的值

通过使用useState钩子来创建一个状态变量&#xff0c;你可以同时获取多个Input框的值。 1获取input框的值&#xff1a; import React, { useState } from react;function MyComponent() {const [forms, setForms] useState({name: ,nation: ,});const handleInputChange (e…...

[虚幻引擎 UE5] EditableText(可编辑文本) 限制只能输入数字并且设置最小值和最大值

本蓝图函数可以格式化 EditableText 控件输入的数据&#xff0c;让其只能输入一定范围内的整数。 蓝图函数 调用方法 下载蓝图&#xff08;5.2.1版本&#xff09;https://dt.cq.cn/archives/618...

Docker技术--Docker容器管理

1.Docker容器相关的指令(单个容器操) 我们之前在Docker中部署了一个实际应用的案例wordpress,其中使用到了一些相关于容器的指令,那么下面我们一起来总结使用。 Docker指令的语法规则如下所示: Docker + 命令关键字 [+参数选项] -1类:关闭、开启、重启、开启自启 systemct…...

three.js(七):内置的二维几何体

二维几何体 PlaneGeometry 矩形平面CircleGeometry 圆形平面RingGeometry 圆环平面 PlaneGeometry 矩形平面 PlaneGeometry(width : Float, height : Float, widthSegments : Integer, heightSegments : Integer) width — 平面沿着X轴的宽度。默认值是1。height — 平面沿着Y…...

golang-bufio 缓冲读

缓冲 IO 计算机中我们常听到这样的两种程序优化方式&#xff1a; 以时间换空间以空间换时间 今天要来看的缓冲IO就是典型的以空间换时间&#xff0c;它的基本原理见上图。简单的解释就是&#xff1a;程序不再直接去读取底层的数据源&#xff0c;而是通过一个缓冲区来进行读取…...

前端 js实现 选中数据 动态 添加在表格中

如下图展示&#xff0c;表格上方有属性内容&#xff0c;下拉选中后&#xff0c;根据选中的内容&#xff0c;添加在下方的表格中。 实现方式&#xff0c;&#xff08;要和后端约定&#xff0c;因为这些动态添加的字段都是后端返回的&#xff0c;后端自己会做处理&#xff0c…...

MySQL—MySQL主从如何保证强一致性

一、前言 涉及到的东西&#xff1a;两阶段提交&#xff0c;binlog三种格式 1、两阶段提交 在持久化 redo log 和 binlog 这两份日志的时候&#xff0c;如果出现半成功的状态&#xff0c;就会造成主从环境的数据不一致性。这是因为 redo log 影响主库的数据&#xff0c;binlog…...

Lora升级!ReLoRa!最新论文 High-Rank Training Through Low-Rank Updates

目录 摘要1 引言2 相关工作3 方法4 实验5 结果6 结论7 局限性和未来工作 关注公众号TechLead&#xff0c;分享AI与云服务技术的全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0…...

gateway动态路由和普通路由+负载均衡,借助eureka

gateway 中的动态路由和普通路由是相互独立配置的注意consumer使用了openFeign远程调用的配置文件中 prefer-ip-address: false 必须为false 否则 gateway的动态路由和负载均衡无法实现 spring:cloud:gateway:enabled: truediscovery:locator:enabled: true #表示动态路由&a…...

HTTP原理与实现

一、基本概念 一、基本原理* 1、全称&#xff1a; HyperText Transfer Protocol (超文本传输协议) 2、底层实现协议&#xff1a;建立在 TCP/IP 上的无状态连接。 3、基本作用&#xff1a;用于客户端与服务器之间的通信&#xff0c;规定客户端和服务器之间的通信格式。包括请…...

现在软件开发app制作还值得做吗

软件开发和制作App还是值得做的&#xff0c;但成功与否取决于多种因素。以下是一些影响你在软件开发和App制作领域发展的因素&#xff1a; 1、市场需求&#xff1a; 开发的App是否满足市场需求&#xff1f;是否解决了用户的问题或提供了有价值的功能&#xff1f;成功的App通常…...

java八股文面试[JVM]——类初始化过程

回顾类加载过程&#xff1a; 知识来源&#xff1a; 【2023年面试】Class初始化过程是什么_哔哩哔哩_bilibili...

什么是SQL注入攻击,解释如何防范SQL注入攻击?

1、什么是SQL注入攻击&#xff0c;解释如何防范SQL注入攻击。 SQL注入攻击是一种常见的网络攻击方式&#xff0c;攻击者通过在Web应用程序的查询语句中插入恶意代码&#xff0c;从而获取数据库中的敏感信息或者执行其他恶意操作。 为了防范SQL注入攻击&#xff0c;可以采取以…...

StringBuilder类分享(2)

一、StringBuilder说明 StringBuilder是一个可变的字符序列。这个类提供了一个与StringBuffer兼容的API&#xff0c;但不保证同步&#xff0c;即StringBuilder不是线程安全的&#xff0c;而StringBuffer是线程安全的。显然&#xff0c;StringBuilder要运行的更快一点。 这个类…...

IDEA查看类中的方法

做个记录 直接查看类中的方法&#xff0c;在打开的时候都会有。 查看单个类中的方法...

MySQL日期格式及日期函数实践

目录 日期格式 日期函数 CURDATE()和CURRENT_DATE()CURTIME()和CURRENT_TIME()NOW()和CURRENT_TIMESTAMP()DATE_FORMAT()DATE_ADD()和DATE_SUB()DATEDIFF()DATE()DAYNAME()和MONTHNAME() 1. 日期格式 在MySQL中&#xff0c;日期可以使用多种格式进行存储和表示。常见的日期格式…...

MySQL项目迁移华为GaussDB PG模式指南

文章目录 0. 前言1. 数据库模式选择&#xff08;B/PG&#xff09;2.驱动选择2.1. 使用postgresql驱动2.1. 使用opengaussjdbc驱动 3. 其他考虑因素4. PG模式4.1 MySQL和OpenGauss不兼容的语法处理建议4.2 语法差异 6. 高斯数据库 PG模式JDBC 使用示例验证6. 参考资料 本章节主要…...

流处理详解

【今日】 目录 一 Stream接口简介 Optional类 Collectors类 二 数据过滤 1. filter()方法 2.distinct()方法 3.limit()方法 4.skip()方法 三 数据映射 四 数据查找 1. allMatch()方法 2. anyMatch()方法 3. noneMatch()方法 4. findFirst()方法 五 数据收集…...

Qt中XML文件创建及解析

一 环境部署 QT的配置文件中添加xml选项&#xff1a; 二 写入xml文件 头文件&#xff1a;#include <QXmlStreamWriter> bool MyXML::writeToXMLFile() {QString currentTime QDateTime::currentDateTime().toString("yyyyMMddhhmmss");QString fileName &…...

【pyqt5界面化工具开发-11】界面化显示检测信息

目录 0x00 前言&#xff1a; 一、布局的设置 二、消息的显示 0x00 前言&#xff1a; 我们在10讲的基础上&#xff0c;需要将其输出到界面上 思路&#xff1a; 1、消息的传递 2、布局的设置 先考虑好消息的传递&#xff0c;再来完善布局 其实先完善布局&#xff0c;再来设置消…...

Batbot电力云平台在智能配电室中的应用

智能配电室管理系统是物联网应用中的底层应用场景&#xff0c;无论是新基建下的智能升级&#xff0c;还是双碳目标下的能源管理&#xff0c;都离不开智能配电运维对传统配电室的智慧改造。Batbot智慧电力&#xff08;运维&#xff09;云平台通过对配电室关键电力设备部署传感器…...

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…...

最简单vue获取当前地区天气--高德开放平台实现

目录 前言 一、注册成为高德平台开发者 二、注册天气key 1.点击首页右上角打开控制台 2.创建新应用 三、vue项目使用 1.打开vue项目找到public下的index.html&#xff0c;如果是vue3的话直接在主目录打开index.html文件就行&#xff0c;主要就是打开出口文件 ​编辑 2.根据高德…...

大数据处理 正则表达式去除特殊字符 提取中文英文数字

在文本处理中&#xff0c;经常会碰到含有特殊字符的字符串。 比如用户昵称&#xff0c; 小红书文案&#xff0c;等等 都包含了大量表情特殊字符。 这些特殊字符串在ETL处理过程中&#xff0c;经常会引起程序报错&#xff0c;导致致命错误&#xff0c;程序崩溃&#xff1b;或者导…...

Python装饰器(decorators)

本文改编自以下文章&#xff1a;Decorators in Python 装饰器是一个很强大的工具&#xff0c;它允许我们很便捷地修改已有函数或者类的功能&#xff0c;我们可以用装饰器把另一个函数包装起来&#xff0c;扩展一些功能而不需要去修改这个函数代码。 预备知识 在Python中&…...

[halcon] 局部图片保存 gen_circle 和 gen_rectangle2 对比 这怕不是bug吧

背景 我想实现一个功能&#xff0c;获取图片中瑕疵的位置&#xff0c;将瑕疵周边的一块区域抠图并保存。 上代码 一开始我代码这么写的&#xff1a; gen_circle (Rectangle, Row[i], Column[i], 256) reduce_domain(Image,Rectangle,GrayEllipse) crop_domain(GrayEllipse,…...

解析msvcp100.dll丢失的原因及修复方法,教你快速解决的方案

msvcp100.dll文件的丢失&#xff0c;其实也是属于dll丢失的其中一种&#xff0c;因为它是dll文件&#xff0c;大家记住&#xff0c;只要是后缀是dll的文件那么它就是dll文件&#xff0c;只要丢失了dll文件&#xff0c;那么其解决的方法都是大同小异的&#xff0c;唯一不同的是&…...

算法:模拟思想算法

文章目录 实现原理算法思路典型例题替换所有问号提莫攻击N字型变换外观序列 总结 本篇总结的是模拟算法 实现原理 模拟算法的实现原理很简单&#xff0c;就是依据题意实现题意的目的即可&#xff0c;考察的是你能不能实现题目题意的代码能力 算法思路 没有很明显的算法思路…...

【base64】JavaScriptuniapp 将图片转为base64并展示

Base64是一种用于编码二进制数据的方法&#xff0c;它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中&#xff0c;通过将二进制数据转换为可打印字符的形式进行传输 JavaScript 压缩图片 <html><body><script src"https://code.j…...

根据一个List生成另外一个List,修改其中一个,导致另外一个List也在变化

1、两个List复制 SysDic aSysDic new SysDic(); aSysDic.setDkey("1"); aSysDic.setDnote("12"); SysDic bSysDic new SysDic(); bSysDic.setDkey("2"); bSysDic.setDnote("23"); …...

Cesium 加载 geojson 文件并对文件中的属性值进行颜色设置

文章目录 需求分析解决 需求 Cesium 加载 geojson 文件并对文件中的属性值进行颜色设置 分析 在搜寻多种解决方案后&#xff0c;最后总结出 自己的解决方案 方案一&#xff0c;没看懂 var geojsonOptions {clampToGround : true //使数据贴地};var entities;promise Cesium…...

windows系统配置tcp最大连接数

打开注册表 运行->regedit HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录下 增加一个MaxUserPort&#xff08;默认值是5000&#xff0c;端口范围是1025至5000&#xff09;MaxUserPort设置为65534&#xff08;需重启服务器&#xff09; 执行dos命令&…...

SQL存储过程中 SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON的作用和详解

今天在写SQL Server存储过程中遇到的&#xff0c;做个整理归纳 USE [ABInbevDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO实际上&#xff0c;我们在创建存储过程的时候&#xff0c;这几行的代码是会自动创建出来的&#xff0c;那么先解释下两个标准的概念。 两个…...

C语言——程序执行的三大流程

顺序 : 从上向下&#xff0c; 顺序执行代码分支 : 根据条件判断&#xff0c; 决定执行代码的分支循环 : 让特定代码重复的执行...

二级MySQL(十)——单表查询

这里我们只在一个表内查询&#xff0c;用到的是较为简单的SELECT函数形式 1、查询指定的字段&#xff1a; 用到的数据库是之前提到的S、P、SP数据库 S表格用到的总数据&#xff1a; 首先我们查询所有供应商的序号和名字 这时都是独立的&#xff0c;没有关系&#xff0c;我们找…...

机器学习:无监督学习

文章目录 线性学习方法聚类ClusteringKmeansHAC 分布表示降维PCAMatrix FactorizationManifold LearningLLELaplacian Eigenmapst-SEN 线性学习方法 聚类Clustering Kmeans 随机选取K个中心&#xff0c;然后计算每个点与中心的距离&#xff0c;找最近的&#xff0c;然后更新中…...

计算机网络之5层网络协议

文章目录 引言一、OSI七层模型二、TCP/IP参考模型三、网络协议的概念和作用四、TCP/IP参考模型每层详细介绍1.物理层2.数据链路层1. 基本概念2.MAC地址3.ARP协议 3. 网络层1. 基本概念2.ip协议3.子网掩码 4. 传输层1. 基本概念2. 协议3. TCP&#xff08;三次握手四次挥手&#…...

常见前端面试之VUE面试题汇总十一

31. Vuex 有哪几种属性&#xff1f; 有五种&#xff0c;分别是 State、 Getter、Mutation 、Action、 Module state > 基本数据(数据源存放地) getters > 从基本数据派生出来的数据 mutations > 提交更改数据的方法&#xff0c;同步 actions > 像一个装饰器&a…...

2021年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;书架 John最近买了一个书架用来存放奶牛养殖书籍&#xff0c;但书架很快被存满了&#xff0c;只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000)&#xff0c;每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000)&#xff0c;N头奶牛的总高度为S。书架高度为B(1 ≤…...

解决 git clone 时出现Failed to connect to 127.0.0.1 port 1573问题

今天去拉一个仓库代码&#xff0c;往常都是一下就拉下来了&#xff0c;今天却报错&#xff0c;报错信息如下&#xff1a; 原因&#xff1a;这种情况是因为代理在git中配置的&#xff0c;但是本身环境就有SSL协议了&#xff0c;所以取消git的https或者http代理即可 方法如下&…...