欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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;
}

但是對于思路一,空間復(fù)雜度顯然是O(1),當我們計算時間復(fù)雜度的時候,最壞的情況是數(shù)組中大部分值都為val,這時時間復(fù)雜度近似為O(1+2+……+n-1)即O(n^2),顯然O(n^2)的時間復(fù)雜度還是不盡人意,本著降低時間復(fù)雜度,我們可以怎樣優(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ù)組,即時間復(fù)雜度為O(n),但是這明顯是一種用空間換區(qū)時間的方法,在此過程我們創(chuàng)建了numsSize個變量,即空間復(fù)雜度為O(n)。所以我們能不能通過再降低空間復(fù)雜度,進一步優(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;
}

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

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

相關(guān)文章

  • udp socket客戶端和udp服務(wù)端程序示例分享

    udp socket客戶端和udp服務(wù)端程序示例分享

    這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下
    2014-03-03
  • C語言算法的時間復(fù)雜度和空間復(fù)雜度

    C語言算法的時間復(fù)雜度和空間復(fù)雜度

    這篇文章主要介紹了C語言算法的時間復(fù)雜度和空間復(fù)雜度,算法在編寫成可執(zhí)行程序后,運行時需要耗費時間資源和空間(內(nèi)存)資源,更多相關(guān)需要的朋友可以參考一下
    2022-07-07
  • C語言基礎(chǔ)應(yīng)用處理學(xué)生打分?計算時間?最少硬幣問題詳細過程

    C語言基礎(chǔ)應(yīng)用處理學(xué)生打分?計算時間?最少硬幣問題詳細過程

    很多的問題其實可以用編程來解決作答,本篇文章帶你用C語言解決最少硬幣問題、計算已經(jīng)過去了多久、學(xué)生成績自動打分來做基礎(chǔ)的訓(xùn)練
    2022-02-02
  • C語言模擬實現(xiàn)字符串庫函數(shù)的示例講解

    C語言模擬實現(xiàn)字符串庫函數(shù)的示例講解

    這篇文章主要為大家詳細介紹了C語言模擬實現(xiàn)字符串庫函數(shù)的具體方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • C++如何將vector數(shù)字寫入到txt文件中

    C++如何將vector數(shù)字寫入到txt文件中

    這篇文章主要介紹了C++如何將vector數(shù)字寫入到txt文件中問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺談c++11線程的互斥量

    淺談c++11線程的互斥量

    互斥量是個類對象,理解成一把鎖(保護共享數(shù)據(jù),其他想操作共享數(shù)據(jù)的線程必須等待解鎖),互斥量使用要小心,保護數(shù)據(jù)不多也不少,少了則沒達到保護效果,多了則影響效率。本文將介紹c++11線程的互斥量,感興趣的同學(xué),可以參考下。
    2021-06-06
  • 淺談c++中的while(cin)問題

    淺談c++中的while(cin)問題

    下面小編就為大家?guī)硪黄獪\談c++中的while(cin)問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C語言菜鳥基礎(chǔ)教程之單精度浮點數(shù)與雙精度浮點數(shù)

    C語言菜鳥基礎(chǔ)教程之單精度浮點數(shù)與雙精度浮點數(shù)

    在C語言中,單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)類型都是用來儲存實數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。
    2017-10-10
  • C語言實現(xiàn)24位彩色圖像二值化

    C語言實現(xiàn)24位彩色圖像二值化

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)24位彩色圖像二值化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解C++編程中的變量相關(guān)知識

    詳解C++編程中的變量相關(guān)知識

    這篇文章主要介紹了詳解C++編程中的變量相關(guān)知識,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09

最新評論