leetcode:Remove Element + Imple…
2017-09-05 12:35
309 查看
Remove Element:
题意主要是给定一个字符串及一个值val,在不使用额外空间的条件下,把所有等于val的值去掉(放在数组最末位),返回更新后的数组长度。
我的思路很简单,遍历一次数组,每当遇到等于val的数值时,就以此的下一个为起点往后遍历,找到第一个不等于val的值,交换即可。
看了大神的思路,才意识到,直接寻找不相等的值来替换之前寻到的val,速度会快很多,程序也很简洁:
int cnt = 0;
for(int i = 0 ; i <
nums.size() ; ++i) {
if(nums[i] == val)
cnt++;
else
nums[i-cnt] = nums[i];
}
return
nums.size()-cnt;
Implement strStr()
不得不说自己真要复习了,连经典的KMP算法都记不清了。。
算法本身不说,说说几个细节问题:
1、leetcode和主流的IDE还是有一定差别的,有些编译错误,在leetcode上居然显示为Runtime
error......
比如:一时忘了C++是不允许用变量初始化数组:int a; //错误!。因为编译器无法得知变量值
可以用new来动态分配,如:int *next=new int[needle.size()];
2、形成next数组的那个循环到size()-1终止即可,最后一个字符对应的next数组值已经在循环内部产生了
3、记得加入判断语句,if(needle[j]==needle[k]),这样可以提高KMP的效率。
4、这一点也是今天被坑的最多的一点,string.size()返回值是[b]unsigned,所以如果用j
题意主要是给定一个字符串及一个值val,在不使用额外空间的条件下,把所有等于val的值去掉(放在数组最末位),返回更新后的数组长度。
我的思路很简单,遍历一次数组,每当遇到等于val的数值时,就以此的下一个为起点往后遍历,找到第一个不等于val的值,交换即可。
看了大神的思路,才意识到,直接寻找不相等的值来替换之前寻到的val,速度会快很多,程序也很简洁:
int cnt = 0;
for(int i = 0 ; i <
nums.size() ; ++i) {
if(nums[i] == val)
cnt++;
else
nums[i-cnt] = nums[i];
}
return
nums.size()-cnt;
Implement strStr()
不得不说自己真要复习了,连经典的KMP算法都记不清了。。
算法本身不说,说说几个细节问题:
1、leetcode和主流的IDE还是有一定差别的,有些编译错误,在leetcode上居然显示为Runtime
error......
比如:一时忘了C++是不允许用变量初始化数组:int a; //错误!。因为编译器无法得知变量值
可以用new来动态分配,如:int *next=new int[needle.size()];
2、形成next数组的那个循环到size()-1终止即可,最后一个字符对应的next数组值已经在循环内部产生了
3、记得加入判断语句,if(needle[j]==needle[k]),这样可以提高KMP的效率。
4、这一点也是今天被坑的最多的一点,string.size()返回值是[b]unsigned,所以如果用j
相关文章推荐
- <LeetCode OJ>Remove Element【27】
- LeetCode:Remove Duplicates from Sorted Array && Remove Element
- [LeetCode] Remove Duplicates from Sorted Array & Remove Element
- Leetcode 27. Remove Element & 26. Remove Duplicates from Sorted Array
- Remove Element<leetcode>
- leetcode Remove Element
- [Leetcode] #26#80 Remove Duplicates from Sorted Array I & II
- leetcode 27 Remove Element C++
- LeetCode 27. Remove Element(移除给定值元素)
- Remove Element leetcode java
- Remove Element [LEETCODE]
- LeetCode:Remove Element
- Leetcode Remove Element
- leetcode: (27) Remove Element
- LeetCode: Remove Element [026]
- leetcode: Best Time&nb…
- LeetCode Remove Element
- Python学习——leetcode(Remove Element)
- leetcode - Remove Duplicates from Sorted Array I && II
- LeetCode.169(229) Majority Element && II