腰酸腿疼肝数模
被教育说代码风格像是小学生而且有点冗余
QAQ之前面试官好像也说过orz努力改努力改
今天把前两天跳过的vector给简单看了一下补上了
Num 14 最长公共前缀 Longest Common Prefix
string在处理过程中有几个问题
第一string是const指针对应的
第二min函数比较要求类型完全相同(a,s.length())这种不能直接比较,要(a,(int)s.length())
另外需要注意的是,一个一个加字符最后加'\0'在数据比较大会出现stack-buffer-overflow,默认分配并没有那么多,相邻内存可能是被占用的、
https://blog.****.net/cny901111/article/details/7771668
可以使用substr,但这个需要头文件string
也可以string g(s,0,len)
s是被复制的字符串,0代表起始位置,len代表长度(是长度不是最后一个下标哦!)
还有注意修改过程中len=min(len,s1.length())
不然的话s1不够长可能会溢出
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int num=strs.capacity();
if(num==) return "";
if(num==) return strs.at();
string s=strs.at();
int len=s.length();
for(int i=;i<num;i++)
{
string s1=strs.at(i);
len=min(len,(int)s1.length());
for(int j=;j<min(len,(int)s1.length());j++)
{
if(s[j]!=s1[j])
{
len=j;
break;
}
}
}
string g(s,,len);
return g;
}
};
Num 26 删除排序数组中的重复项 Remove Duplicates from Sorted Array
边写边想O(1),比自己暴力搬动确实要好一些的,反复提示后面不用管,那么在len修改的过程中直接把数字带过去就好了
vector a 里面元素个数 a.capacity()
可以想象成数组,直接a[i],也可以用a.at(i)
注意一下呀这个有可能是空的,学会考虑边界条件 a.empty(),判断是否为空
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.empty()) return ;
int now=nums[];
int len=;
for(int i=;i<nums.capacity();i++)
{
if(nums[i]>now)
{
now=nums[i];
nums[len++]=now;
}
}
return len;
}
};