栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode-27

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode-27

                1>暴力求解法(时间复杂度O(n^2),空间复杂度度为O(1)):

先是遍历每一个数,遇到目标val,进入内循环,后面元素向前移动,但是有两个很重要的点。一个是我们两个for循环的判断条件不是小于nums.size(),而是最开始创建一个变量sz先接受数组初始大小,然 后每找到val时sz递减,因为已经删掉一个元素了,元素前移后,末端 的元素我们不需要再访问了,并且外循环的i(内循环用j)
也要递减,因为后面元素前移,说明未访问的元素位置都减小了。如果这两点不注意,会超时的。
              2>快慢指针法(时间复杂度为O(n),空间复杂度为O(0)):

快慢指针其实就如其名。因为无论nums[fastPtr]是否等于val,fastPtr都会自增, 而slowPtr只有当nums[fastPtr]不等于val时才会将值赋值给nums[slowPtr],就相当于遇到了val,我们直接跳过了它。最后因为slowPtr自增, 那么直接返回slowPtr就是数组大小 

/暴力求解:
class Solution {
public:
    int removeElement(vector& nums, int val)
    {
        int sz=nums.size();
        for(int i=0;i& nums, int val) 
    {
        int slowPtr=0;
        int fastPtr;
        for(fastPtr=0;fastPtr 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号