- 博客(15)
- 收藏
- 关注
原创 leetcode刷题记录-字符串-字符串转换整数
class Solution { public: int myAtoi(string s) { int flag = 1;//缺省值为正; int left = 0; long long res = 0; for (int i = 0; i < s.length(); i++ ) { if (s[i] == '-' || s[.
2022-04-18 10:56:18
739
原创 leetcode刷题记录-字符串-是否回文串
双指针,遇到除数字和字母外的字符跳过。 代码如下: class Solution { public: bool isPalindrome(string s) { int left = 0; int right = s.length() - left -1; transform(s.begin(),s.end(),s.begin(),::tolower); while (left < right) {
2022-04-14 09:06:56
602
原创 leetcode刷题记录-字符串-有效的字母异位词
思路:创建两个hash表,统计两个字符串中字符的出现次数,而后对任一字符串遍历,若s中的字符没有在t中出现或者出现了但value相减不等于0,则返回false,否则返回true。 小坑:本题两个字符串的长度不一定相等。 代码如下: #include<unordered_map> using namespace std; class Solution { public: bool isAnagram(string s, string t) { if (s.l...
2022-04-13 10:59:22
764
原创 leetcode刷题记录-字符串-字符串中的第一个唯一字符
这题差点写到我心态崩溃!还是没做出来。 看到提示中的哈希表,我直接想到前面做的一道题中,边查找边向哈希表插入的方法,于是生搬硬套,想要通过一次for循环就解出此题,写出了以下代码段: for(int right = 1;right < len;right++) { if(m.find(s[right]) == m.end()) { m.emplace(std::make_pair(s[right],right)); } e...
2022-04-13 10:36:51
862
原创 leetcode刷题记录-数组-两数之和
1.暴力法 双循环即可。 代码如下: class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int len = nums.size(); for (int i = 0;i < len;i++) { for (int j = i+1;j < len;j++)
2022-04-04 08:29:09
99
原创 leetcode刷题记录-数组-移动零
思路: 设置变量znums:出现的0的个数。遍历数组,若当前元素为0,则znums加1,否则将当前元素与(当前下标-znums)的元素互换位置。 代码如下: class Solution { public: void moveZeroes(vector<int>& nums) { int znums = 0; int len = nums.size(); int tmp; for (int i = 0;i&l
2022-04-03 23:47:42
442
原创 OMNET++安装过程记录
1.编译环境 Java环境,用的是jre for consumer版本 https://www.java.com/zh-CN/download/ 2.下载安装omnet++ OMNeT++ Downloads 解压所下载的压缩包后,运行mingwenv.cmd,用于搭建mingw环境。 , 跑完后按任意键,弹出新窗口,依次运行./configure 和make命令 经过十几分钟等待 输入omnetpp并执行 弹出的弹窗默认执行即可。 完毕。 ..
2022-03-30 21:29:14
4214
原创 leetcode刷题记录-数组-加一
本题需要考虑的情况就是各位加一后有无进位。如果有进位,则该位置0,继续判断下一位。 更简明的思路是,从后向前遍历数组元素,若元素为9,则当前位置0,若不为9,则当前位加1后直接返回数组,结束循环。 特殊情况:当各位都是9时,将首元素置1后,还需在末尾添加一个0。 附上代码: class Solution { public: vector<int> plusOne(vector<int>& digits) { int len = digit..
2022-03-29 15:28:19
1130
原创 leetcode刷题记录-数组-两个数组的交集
### 过程学习记录: 对向量插入,只能调用容器的成员函数。可以是push_back(),可以是emplace_back(); push_back()会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题就是临时变量申请资源的浪费。 emplace_back()会在容器尾部添加一个元素,这个元素原地构造,不需要触发拷贝构造和转移构造。而且调用形式更加简洁,直接根据参数初始化临时对象的成员。 ### 本题采用双指针,nums1下标为左指
2022-03-28 21:42:49
135
原创 leetcode刷题记录-数组-只出现一次的数字
1.排序后,两两比较,若相同,i+2,若不同,返回nums[i],若此时i跳到了数组最后一个元素,则说明最后一个元素是只出现一次的数字,返回此时的nums[i]; classSolution{ public: intsingleNumber(vector<int>&nums){ intlength=nums.size(); if(nums.size()<=1) returnnums[0]...
2022-03-28 17:37:16
338
原创 leetcode刷题记录-数组-删除重复项
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 1.暴力法: 双层for循环,遍历对于每个元素,遍历一遍数组,复杂度为n^2,当输入数组很大时,会超时。 2.排序后比较相邻元素: 用c++的sort函数, ...
2022-03-28 17:04:32
1492
原创 leetcode刷题记录-数组-旋转数组
本题思路为:连环跳,如:对于数组nums[1,2,3,4],k=2 在最外层设置一个for循环,循环次数就是元素的个数,因为每个元素都会移动一次自己的位置。 cur先为nums[0],然后nums[0]先跳到nums[3],然后将nums[3]存到tmp后,将nums[3]置为cur,判断next:如果next已经访问过了,则将cur置为next+1;若无,继续跳; class Solution { public: void rotate(vector<int>& nums...
2022-03-22 13:30:59
107
原创 leetcode刷题记录-数组-买卖股票的最佳时机
本题用贪心算法求解即可。因为只要第二天的股价高于今天,卖出就能获得利润,用贪心算法可以得出局部最优解,而在本题条件中,贪心算法得出的局部最优解就是全局最优解。 class Solution { public: int maxProfit(vector<int>& prices) { int profit = 0; int cur = 0; for (int next = 1; next < prices.size(); ne...
2022-03-20 20:37:19
1038
原创 leetcode刷题记录-数组-删除重复项
解题方法:用左右指针,左指针指向当前项(cur),右指针(next)做移动。 当左指针与右指针所指向的元素不同时,将nums[cur+1]赋值为nums[next],然后左右指针均右移;当相同时,只对右指针做右移。当右指针移动到数组末尾时,操作结束。 用这种思想只需遍历数组一次。 class Solution { public: int removeDuplicates(vector<int>& nums) { int cur = 0; ...
2022-03-20 18:36:33
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅