LeetCode | Remove Element
来源:互联网 发布:关于网络女主播电影 编辑:程序博客网 时间:2024/06/05 16:33
解法一:空间复杂度O(n)
使用额外的空间可以使思路变得简单,要做的就是从A里面逐一拷贝元素到aux里,其中跳过elem就行了。缺点就是提升了空间复杂度,还有到最后需要把aux
的值在重新赋值给A,这样时间复杂度也多了一倍到达了theta(2n),空间复杂度为O(n)
复制代码
int removeElement2(int A[], int n, int elem) { int len = n; int aux[n]; int k = 0; for (int i = 0; i < n; i++) { if (A[i] == elem) { len--; } else { aux[k++] = A[i]; } } for (int i = 0; i < len; i++) { A[i] = aux[i]; } return len;}
复制代码
解法二:认真观察删除操作的性质会发现,删除一个元素不过就是把他后面的元素向前移动一位,那删除两个不就是移动两位,三个就是三位。。。以此类推。
所以我们只用在遍历数组的时候跟踪删除的个数n,然后同时将元素向后挪动n位就可以了,就这么简单。
复制代码
int removeElement(vector<int>& nums, int val) { //在遍历数组的时候跟踪删除的个数n,然后同时将元素向后挪动n位就可以了 int cnt=0; int size=nums.size(); for(int i=0;i<size;i++){ if(nums[i]==val) cnt++; else if(cnt>0) nums[i-cnt]=nums[i]; } return size-cnt; }
0 0
- LeetCode:Remove Element
- LeetCode: Remove Element
- [Leetcode] Remove Element
- LeetCode: Remove Element
- leetcode 39: Remove Element
- [LeetCode] Remove Element
- Leetcode: Remove Element
- Leetcode:Remove Element
- Leetcode:Remove Element
- Leetcode:Remove Element
- [LeetCode]Remove Element
- LeetCode-Remove Element
- LeetCode - Remove Element
- LeetCode | Remove Element
- leetcode之Remove Element
- LeetCode - Remove Element
- LeetCode: Remove Element
- 【LeetCode】Remove Element
- spring整合JMS之异步消息监听机制
- URL 匹配 IP 或 域名 + 端口
- “食尸鬼行动”攻击30多个国家超过130家企业 包括中国
- Linux crontab 命令
- Unity自定义消息弹出框
- LeetCode | Remove Element
- 解决Eclipse开启后闪退问题方案
- [Python] 'unicode' object is not callable
- 基于Java的软件测试(下)
- LeetCode Ransom Note(字符串)
- sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set的解决办法
- 使用HorizontalScrollView 注意事项
- 单例模式以及双检锁DCL
- Linux电源管理(11)_Runtime PM之功能描述