最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言移除元素的三種思路講解

 更新時間:2022年10月19日 11:20:13   作者:小牛要翻身  
這篇文章主要介紹了C語言移除元素的三種思路,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路

問題描述

原題鏈接:https://leetcode.cn/problems/remove-element/

解題方案

思路一

思路一:

首先通過簡單分析,很明顯這是一道順序表相關(guān)問題。首先能夠想到的是暴力求解,即思路一:找到所有的val,每次挪動val后的數(shù)據(jù)覆蓋刪除val。

??代碼展示:

int find(int*nums,int numsSize,int val)
{
     int i=0;
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]==val)
            return i;
    }
    return -1;
}
int removeElement(int* nums, int numsSize, int val)
{
   int ret;
    while((ret=find(nums,numsSize,val))!=-1)
    {
        for(int i=ret;i<numsSize-1;i++)
        {
            nums[i]=nums[i+1];
        }
        numsSize--;
    }
   return numsSize;
}

但是對于思路一,空間復雜度顯然是O(1),當我們計算時間復雜度的時候,最壞的情況是數(shù)組中大部分值都為val,這時時間復雜度近似為O(1+2+……+n-1)即O(n^2),顯然O(n^2)的時間復雜度還是不盡人意,本著降低時間復雜度,我們可以怎樣優(yōu)化呢?

思路二

思路二:

在創(chuàng)建一個臨時數(shù)組tmp,遍歷nums數(shù)組,把不是val的數(shù)值放到tmp數(shù)組,最后把tmp數(shù)組的內(nèi)容依次拷貝到nums數(shù)組,返回tmp數(shù)組長度。

??代碼展示:

int removeElement(int* nums, int numsSize, int val)
{
    if(numsSize==0)//特殊處理
        return 0;
    int i=0;
    int tmp[numsSize];
    int count=0;
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]!=val)
        {
            tmp[count]=nums[i];
            count++;
        }
    }
    for(i=0;i<numsSize;i++)
    {
        nums[i]=tmp[i];
    }
    return count;
}

注釋:這里的特殊處理是因為在函數(shù)中使用了變長數(shù)組 int tmp[numsSize];而變長數(shù)組的大小不能為0,這是使用特殊處理,是因為力扣的測試用例中含有[] 0。

對于思路二,最壞的情況我們只遍歷了1遍數(shù)組,即時間復雜度為O(n),但是這明顯是一種用空間換區(qū)時間的方法,在此過程我們創(chuàng)建了numsSize個變量,即空間復雜度為O(n)。所以我們能不能通過再降低空間復雜度,進一步優(yōu)化呢?

思路三(最優(yōu)解)

思路三:

創(chuàng)建兩個變量src、dest,初始時指向首部,判斷nums[src]是否等于val,如果等于val則dest指向不動,src向后偏移,直到nums[src]!=val,令nums[dest]=nums[src],然后src、dest都向后偏移,直到src遍歷完數(shù)組,程序結(jié)束。

??代碼展示:

int removeElement(int* nums, int numsSize, int val)
{
    int src=0;
    int dest=0;
    while(src<numsSize)
    {
        if(nums[src]!=val)
        {
            nums[dest]=nums[src];
            src++;
            dest++;
        }
        else
            src++;
    }
    return dest;
}

這種思路下時間復雜度為遍歷整個數(shù)組O(n),創(chuàng)建的變量為有限個,所以空間復雜度為O(1)。相比之下為最優(yōu)解。

到此這篇關(guān)于C語言移除元素的三種思路講解的文章就介紹到這了,更多相關(guān)C語言移除元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 2048小游戲C語言實現(xiàn)代碼

    2048小游戲C語言實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了2048小游戲C語言實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語言實現(xiàn)動態(tài)開辟存儲楊輝三角

    C語言實現(xiàn)動態(tài)開辟存儲楊輝三角

    這篇文章主要介紹了如何利用C語言實現(xiàn)動態(tài)開辟存儲楊輝三角,可以靈活的開辟空間,充分的利用空間。文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2022-03-03
  • C語言中操作sqlserver數(shù)據(jù)庫案例教程

    C語言中操作sqlserver數(shù)據(jù)庫案例教程

    這篇文章主要介紹了C語言中操作sqlserver數(shù)據(jù)庫案例教程,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++連接mysql的方法(直接調(diào)用C-API)

    C++連接mysql的方法(直接調(diào)用C-API)

    首先安裝mysql,點完全安裝,才能在在安裝目錄include找到相應的頭文件,注意,是完全安裝,需要的朋友可以參考下
    2017-06-06
  • 解決了個困擾了2天的問題,定點運算問題

    解決了個困擾了2天的問題,定點運算問題

    本文主要講解定點運算問題,需要的朋友可以參考一下。
    2016-06-06
  • C語言通訊錄管理系統(tǒng)完整代碼

    C語言通訊錄管理系統(tǒng)完整代碼

    這篇文章主要為大家詳細介紹了C語言通訊錄管理系統(tǒng)完整代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言實現(xiàn)班級學生管理系統(tǒng)

    C語言實現(xiàn)班級學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)班級學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++中純虛函數(shù)的實例詳解

    C++中純虛函數(shù)的實例詳解

    純虛函數(shù)就是一個在基類中的虛函數(shù),差別只是在一般的虛函數(shù)聲明的后面加了“=0”,下面這篇文章主要給大家介紹了關(guān)于C++中純虛函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • C++存儲方案和動態(tài)分配

    C++存儲方案和動態(tài)分配

    這篇文章主要介紹了C++存儲方案和動態(tài)分配,
    2021-12-12
  • C++超詳細講解引用和指針

    C++超詳細講解引用和指針

    引用是C++一個很重要的特性,顧名思義是某一個變量或?qū)ο蟮膭e名,對引用的操作與對其所綁定的變量或?qū)ο蟮牟僮魍耆葍r,這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識點,需要的朋友可以參考下
    2022-06-06

最新評論

桦甸市| 龙门县| 临清市| 清徐县| 泾阳县| 九龙城区| 台州市| 万全县| 揭阳市| 盐城市| 区。| 凌源市| 阿坝县| 舒城县| 南投市| 宜宾市| 朝阳市| 安化县| 姚安县| 乌拉特中旗| 凌云县| 长春市| 长岛县| 衡阳县| 汉中市| 太湖县| 姜堰市| 林州市| 夏邑县| 汶川县| 奉节县| 邵阳市| 义马市| 夏津县| 苍南县| 嘉兴市| 玛多县| 启东市| 永年县| 施甸县| 兴化市|