zoukankan      html  css  js  c++  java
  • code第一部分:数组

    code第一部分:数组

    都说写代码一定要自己尝试,看再多也没有,确实是的;之前写过很多,感觉可以分享给大家的就放到博客上,希望激励自己好好敲代码。共勉吧!

    之前一段时间把关于数组部分的内容做了一些;每周我会集中上传一次;任务量还是很大的;废话不多说,开始!

    首先我把题目按照大的分类,总结起来了,这一部分是数组部分,思维导图如下

    第一题 从有序数组中移除重复的数据。

    Given a sorted array, remove the duplicates in place such that each element appear only
    once and return the new length.
    Do not allocate extra space for another array, you must do this in place with constant memory.
    For example, Given input array A = [1,1,2],
    Your function should return length = 2, and A is now [1,2].

    分析:
    注意是不能分配额外的空间;
    如果没有这个条件,有很多的办法,重新分配一个数组,没重复的数据直接存储;
    但是不能分配,就可以直接使用数组的空间实现;

    解决方法1 :在数组中留一个索引,索引和下标都往后移,重复就不保存,不重复就保存;


    解决办法2 : 如果对STL很熟悉,就可以直接调用STL做;在#include <algorithm>下,
    先调用uniuqe(a,a+n)函数去重,再调用distance来得到去重后数组的大小;


    解决办法3:还是要使用stl中的unique函数,但是如果不知道用distance函数,直接使用
    sizeof(a)/sizeof(int)得到去重后数组的大小

    源代码如下

    #include <iostream>
    
    #include <algorithm>
    
    using namespace std;
    
    int removeduplicate(int a[],int n)
    {
        int i=1;
        int index=0;
        if (n==0)
        {
            cout<<"the length of array is zero"<<endl;
        }
        a[index]=a[0];
        while(i<n)
        {
            if (a[index]!=a[i])
            {
                a[index]=a[i];
                index++;
                i++;
            }
            else
                i++;
        }
        return index+1;
    }
    
    int removeduplicate2(int a[],int n)
    {
        return distance(a, unique(a, a + n));
    }
    
    int removeduplicate3(int a[],int n)
    {
        unique(a, a + n);
        int length=sizeof(a)/sizeof(int);
        return length;
    }
    
    
    int main()
    {
        int a[3]={1,1,2};
        int ans=removeduplicate(a,3);
        cout<<ans<<endl;
        int b[3]={1,1,2};
        int ans1=removeduplicate2(b,3);
        cout<<ans1<<endl;
        int c[3]={1,1,2};
        int ans2=removeduplicate2(c,3);
        cout<<ans2<<endl;
        return 0;
    }

    代码测试通过!

  • 相关阅读:
    1.Angular的架构模型
    最受欢迎的14款主流渗透工具,流行至今
    当今破解密码涉及的思路方法总结
    Windows权限提升基础知识和命令
    同形异义字:看我如何拿到TaoBao.com的解析权
    【浅谈web安全】大企业安全:从员工下手
    PHPcms9.6.0任意文件上传漏洞直接getshell 利用教程
    【MD5解密】免费帮大家解MD5
    【社会工程学】打脸社工所谓的社工六人组社工帝
    震惊!WIN2003存在后门大全,提权成功率高
  • 原文地址:https://www.cnblogs.com/tao-alex/p/6442969.html
Copyright © 2011-2022 走看看