03 2024 档案

摘要:c++标准库中的remove函数,看上去好像是用来"remove"字符串里的特定字符,如: string a="123";remove(a,'1');但是实际结果并不是“23”而是“233”。 因为remove的删除操作是基于移动元素,即用后面的元素覆盖前面的元素。如果想要实现删除的操作,应该结合e 阅读全文
posted @ 2024-03-30 13:46 SandaiYoung 阅读(293) 评论(0) 推荐(0) 编辑
摘要:memset函数可以对一块内存进行整体赋值,但是要注意使用场合。对于字符数组,我们可以放心使用memset,但是对于整型数组,我们只能用来清零,而不能赋非零值,这会导致错误的结果。menset函数会将我们的整型数组当做字符数组来处理,即按照1个字节进行赋值而不是按4个字节。 阅读全文
posted @ 2024-03-29 00:01 SandaiYoung 阅读(45) 评论(0) 推荐(0) 编辑
摘要:柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode) 思路:掌握了……吗?还是参考了下官网思路。代码随想录 (programmercarl.com) class Solution { public: int largestRectangleArea(vector<i 阅读全文
posted @ 2024-03-28 13:17 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:下一个更大元素II 题目链接:503. 下一个更大元素 II - 力扣(LeetCode) 思路:这里处理循环数组的方式值得学习,用i%nums.size()和for循环的上限来模拟两层for循环。整体思路还是单调栈。 class Solution { public: vector<int> nex 阅读全文
posted @ 2024-03-28 00:46 SandaiYoung 阅读(7) 评论(0) 推荐(0) 编辑
摘要:每日温度 题目链接:739. 每日温度 - 力扣(LeetCode) 思路:很容易想到暴力解法。但超时也是很轻松的。 class Solution { public: vector<int> dailyTemperatures(vector<int>& temperatures) { // stac 阅读全文
posted @ 2024-03-26 23:26 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑
摘要:回文子串 题目链接:647. 回文子串 - 力扣(LeetCode)思路:投降 class Solution { public: int countSubstrings(string s) { vector<vector<bool>> dp(s.size(), vector<bool>(s.size 阅读全文
posted @ 2024-03-26 20:42 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:两个字符串的删除操作 题目链接:583. 两个字符串的删除操作 - 力扣(LeetCode) 思路:第一次尝试用画图法,然后肉眼观察dp递归规律……但是dp[i][j]的含义还是参考昨天的思路,表示到此处需要删除多少个字符。 class Solution { public: int minDista 阅读全文
posted @ 2024-03-23 17:09 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:判断子序列 题目链接:392. 判断子序列 - 力扣(LeetCode) 思路:从子串s开始遍历,查找t中是否存在,因为全程不需要回溯,因此两个for循环就解决了。只是要注意return的时机。(只要不想写的很简洁,逻辑挺简单的其实) class Solution { public: bool is 阅读全文
posted @ 2024-03-22 18:52 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 思路:。 class Solution { public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> 阅读全文
posted @ 2024-03-21 22:08 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:最长递增子序列 题目链接:300. 最长递增子序列 - 力扣(LeetCode) 思路:感觉有点像暴力? class Solution { public: int lengthOfLIS(vector<int>& nums) { if(nums.size()==1)return 1; vector< 阅读全文
posted @ 2024-03-20 14:41 SandaiYoung 阅读(7) 评论(0) 推荐(0) 编辑
摘要:最佳买卖股票时机含冷冻期 题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 思路:本题难点在于如何将冷冻期加入到状态转移方程中,不妨画个图: 按理来说,如何我们正处于买入状态,将股票卖出后,应该是冷冻状态,但是这里多加了一个今日卖出状态,就是将今日卖出和卖出状态分开看,避 阅读全文
posted @ 2024-03-19 15:31 SandaiYoung 阅读(12) 评论(0) 推荐(0) 编辑
摘要:买卖股票的最佳时机III 题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode) 思路:与买卖股票2的区别在于我可以买卖两次,那么dp数组的状态就从两种变成了种,即第一次持有,第一次卖出,第二次持有,第二次卖出,注意这四种状态是不会同时存在的,除此之外还有一种状态,那就是不操作 阅读全文
posted @ 2024-03-18 20:03 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑
摘要:买卖股票的最佳时机 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode) 思路:注意买卖只有一次。 暴力法,因为股票就买卖一次,那么贪心的想法很自然就是取最左最小值,取最右最大值,那么得到的差值就是最大利润: class Solution { public: int maxProfi 阅读全文
posted @ 2024-03-16 15:01 SandaiYoung 阅读(5) 评论(0) 推荐(0) 编辑
摘要:打家劫舍 题目链接:198. 打家劫舍 - 力扣(LeetCode) 思路:每一家的最大收益来源只有两个,一个是这家不偷,那么最大收益等于从上一家出来的最大收益,另一个是偷这一个家,因此最大收益等于从上上一家出来的最大收益加这一家的收益。 class Solution { public: int r 阅读全文
posted @ 2024-03-15 14:42 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) 思路:竟然真能转化为背包问题。 class Solution { public: bool wordBreak(string s, vector<string>& wordDict) { unordered_set<string> 阅读全文
posted @ 2024-03-14 20:20 SandaiYoung 阅读(10) 评论(0) 推荐(0) 编辑
摘要:首先,必须说明的是,粘包问题并不是源于通信协议TCP,TCP是基于连接的安全的协议,不会出现所谓的粘包问题,但这也只是对于流式传输是这样的。但我们需要不定长的分段数据包时,粘包问题就出现了。因此粘包问题是源自于我们的需求,而不是TCP。 解决粘包问题,明确来说,就是解决数据定界问题。我简单想到了以下 阅读全文
posted @ 2024-03-13 20:57 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑
摘要:爬楼梯 (进阶) 题目链接:57. 爬楼梯(第八期模拟笔试) (kamacoder.com) 思路:笑嘻了,直接给默写出来了。 #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<in 阅读全文
posted @ 2024-03-13 16:46 SandaiYoung 阅读(5) 评论(0) 推荐(0) 编辑
摘要:完全背包 题目链接:52. 携带研究材料(第七期模拟笔试) (kamacoder.com) 思路:完全·背包问题和01背包的区别在于同一个物品可以被重复放入,在代码里的区别就是内部遍历背包的for循环由倒序变成了正序。而且如果我们压缩了一维的话,如我的做法,两个for循环的顺序也是无所谓的。 #in 阅读全文
posted @ 2024-03-12 15:19 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:最后一块石头的重量 II 题目链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 思路:尽可能将石头分成重量相近的两堆,结果一定最小,因此问题可以转换为分割子集。dp[i]的含义是背包容量为i的背包能装下的最大重量,由于题目中最大重量是15000,所以我们申请15001的vec 阅读全文
posted @ 2024-03-11 17:22 SandaiYoung 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-03-10 17:08 SandaiYoung 阅读(10) 评论(0) 推荐(0) 编辑
摘要:为了避免数据包错传,实际使用中很少直接使用标准消息包,而是使用名称更能表现实际用处的自定义消息类型。构建自定义消息类型步骤如下: 阅读全文
posted @ 2024-03-09 18:33 SandaiYoung 阅读(64) 评论(0) 推荐(0) 编辑
摘要:01背包问题,你该了解这些! 题目链接:46. 携带研究材料(第六期模拟笔试) (kamacoder.com) 思路:第一次遇到背包问题,好好记住吧。代码随想录 (programmercarl.com) #include<bits/stdc++.h> using namespace std; int 阅读全文
posted @ 2024-03-09 17:00 SandaiYoung 阅读(29) 评论(0) 推荐(0) 编辑
摘要:该代码块实现机器人强制面向z轴90度方向的功能,无论怎么改变机器人方向,他都会自我调整方向。 double target_yaw=90; double diff_angle = target_yaw - yaw; geometry_msgs::Twist vel_cmd; vel_cmd.angul 阅读全文
posted @ 2024-03-08 19:28 SandaiYoung 阅读(49) 评论(0) 推荐(0) 编辑
摘要:void IMUCallback(sensor_msgs::Imu msg){ if(msg.orientation_covariance[0]<0)//若协方差矩阵第一个值为-1,表示数据不存在 return; //用TF工具将四元数转化为欧拉角 tf::Quaternion quaternion 阅读全文
posted @ 2024-03-08 17:43 SandaiYoung 阅读(70) 评论(0) 推荐(0) 编辑
摘要:整数拆分 题目链接:343. 整数拆分 - 力扣(LeetCode) 思路:第一步想的是用递归做, int digui(int n){ if(n==1)return n; return max((n/2)*(n-n/2),digui(n/2)*digui(n-n/2)); } 可惜的是题目并没有规定 阅读全文
posted @ 2024-03-08 16:16 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 思路:由于不能回退,因此每一格只能来自上一格或左边一格,因此dp数组中每个格子只要将这两个格子的值相加即可。 class Solution { public: int uniquePaths(int m, int n) { vect 阅读全文
posted @ 2024-03-07 15:36 SandaiYoung 阅读(8) 评论(0) 推荐(0) 编辑
摘要:如图: 在程序中加入这一句,LC_ALL表示全部重新设置,后面的zh_CN.UTF-8只有在英文系统下需要添加,正常情况下只写一个“”就够了。 阅读全文
posted @ 2024-03-06 19:56 SandaiYoung 阅读(171) 评论(0) 推荐(0) 编辑
摘要:值得注意的是,即使发布者并不存在,但只要订阅者向roscore发出了订阅需求,那么我们就能从rostopic发现这个话题。 阅读全文
posted @ 2024-03-06 17:40 SandaiYoung 阅读(11) 评论(0) 推荐(0) 编辑
摘要:理论基础 代码随想录 (programmercarl.com) 动态规划的五部曲: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 斐波那契数 题目链接:509. 斐波那契数 - 力扣(LeetCode) 思路:还好。 class S 阅读全文
posted @ 2024-03-06 16:04 SandaiYoung 阅读(8) 评论(0) 推荐(0) 编辑
摘要:单调递增的数字 题目链接:738. 单调递增的数字 - 力扣(LeetCode) 思路: 从左向右验证是否按位单调递增,如果出现递减的区间,则从该位开始验证该位减1后是否比左边的相邻位大,如果不符合就接着向左寻找这样的位,如果找到了,则将该位前面的位复制到结果中,该位减1加入结果,该位之后的位全部改 阅读全文
posted @ 2024-03-05 16:36 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:无重叠区间 题目链接:435. 无重叠区间 - 力扣(LeetCode) 思路:我的思路是先将所有区间按左端点从小到大排序,左端点相同时右端点从小到大排序。接下来遍历数组,如果下一个区间与该区间有重叠部分,count加1,同时遍历下下一个区间(下一个区间被视为删除),同时如果下一个区间被包含在该区间 阅读全文
posted @ 2024-03-04 20:53 SandaiYoung 阅读(5) 评论(0) 推荐(0) 编辑
摘要:刷leetcode的时候,在sort函数里自己实现了一个比较算法: sort(points.begin(),points.end(),[](const vector<int>u,const vector<int>v){ return u[0]<v[0]||(u[0]==v[0]&&u[1]<v[1] 阅读全文
posted @ 2024-03-02 17:26 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑
摘要:柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 思路:注意对于20元的情况,有两种找零方式, 头一次见到这种情况,随便加一个标准输出才能通过的样例。 class Solution { public: bool lemonadeChange(vector<int>& bill 阅读全文
posted @ 2024-03-02 16:46 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:K次取反后最大化的数组和 题目链接:1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 思路:首先增序排序,然后依次将负值取反,如果负数先用完,则再排序一次,将最小的正数取反之后求和;如果k先用完,直接求和。 注意sort默认是增序排序,若想要要降序,则不能使用sort(nums. 阅读全文
posted @ 2024-03-01 16:11 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示