leetcode:Remove Element + Imple…
来源:互联网 发布:睡了兄弟的女朋友知乎 编辑:程序博客网 时间:2024/05/17 00:04
Remove Element:
int cnt = 0; for(int i = 0 ; i <nums.size() ; ++i) { if(nums[i] == val) cnt++; else nums[i-cnt] = nums[i]; } returnnums.size()-cnt;
题意主要是给定一个字符串及一个值val,在不使用额外空间的条件下,把所有等于val的值去掉(放在数组最末位),返回更新后的数组长度。
我的思路很简单,遍历一次数组,每当遇到等于val的数值时,就以此的下一个为起点往后遍历,找到第一个不等于val的值,交换即可。
看了大神的思路,才意识到,直接寻找不相等的值来替换之前寻到的val,速度会快很多,程序也很简洁:
Implement strStr()
不得不说自己真要复习了,连经典的KMP算法都记不清了。。
算法本身不说,说说几个细节问题:
1、leetcode和主流的IDE还是有一定差别的,有些编译错误,在leetcode上居然显示为Runtimeerror......
比如:一时忘了C++是不允许用变量初始化数组:int a[b]; //错误!。因为编译器无法得知变量值
可以用new来动态分配,如:int *next=new int[needle.size()];
2、形成next数组的那个循环到size()-1终止即可,最后一个字符对应的next数组值已经在循环内部产生了
3、记得加入判断语句,if(needle[j]==needle[k]),这样可以提高KMP的效率。
4、这一点也是今天被坑的最多的一点,string.size()返回值是unsigned,所以如果用j
阅读全文
0 0
- leetcode:Remove Element + Imple…
- leetcode:Divide Two Integers + …
- leetcode:Shuffle an Array + Miss…
- leetcode:Integer to Roman + Fin…
-  
- 集线器 交换机 路由器 网桥 …
-
- 使用BBED修改SCN …
- How To Remove Or&…
- Hive安装 …
- android o…
- android …
- [转] 彼尔…
- “constructors not allowed …
- 关于alter system switch lo…
- MPMoviePlayerController …
- leetcode:Next Permutation + Lon…
- leetcode:Fraction to Recurring …
- Caffe卷积层的实现细节
- 在VS2013上安装opencv
- 自制lenet:从获取数据到网络编写…
- 普通选项卡切换
- 自制lenet:从获取数据到网络编写…
- leetcode:Remove Element + Imple…
- MATLAB使用备注(二)
- 在linux下挂载、更新与定制硬盘
- leetcode:Divide Two Integers + …
- LINUXmint18.2添加国内源以及安装各种流行软件(网易云音乐,搜狗,谷歌浏览器,virtualbox虚拟机)
- leetcode:Next Permutation + Lon…
- C#枚举所有串口COM
- 数据库的锁表和解锁操作
- leetcode:Fraction to Recurring …