找出數(shù)組中重復的數(shù)字(c語言)-創(chuàng)新互聯(lián)

找出數(shù)組中重復的數(shù)字(c語言)讓人瑟瑟發(fā)抖的面試題


。

成都創(chuàng)新互聯(lián)公司專注于依安企業(yè)網(wǎng)站建設,響應式網(wǎng)站,成都做商城網(wǎng)站。依安網(wǎng)站建設公司,為依安等地區(qū)提供建站服務。全流程定制網(wǎng)站設計,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務

來我們看一下題目
在一個 長度為n的數(shù)組里的所有數(shù)字都在0~n-的范圍內。數(shù)組中某些數(shù)字是重復的,但不知道有幾個數(shù)字重復倫理,也不知道每個數(shù)字重復了多少次,找出任意一個重復的數(shù)字
注意:時間復雜度O(n),空間復雜度O(1)

找出數(shù)組中重復的數(shù)字(c語言)怎么解決勒???
分析:利用題目中0~n-1范圍,可以運用數(shù)組下標和數(shù)組內容進行比較
if (arr[i] != arr[arr[i]]),如果不相等時,進行調換,相等時,直接返回值
找出數(shù)組中重復的數(shù)字(c語言)來看看代碼

#include<stdio.h>
#define SIZE(arr) sizeof(arr)/sizeof(arr[0])//數(shù)組長度

void Swap(int *left, int *right)
{
    int tmp = *left;
    *left = *right;
    *right = tmp;
}
int duplicate(int arr[],int len)
{
    int i;
    if (len < 0)
    {
        return 0;
    }
    for (i = 0; i < len; i++)
    {
        if (arr[i] < 0 || arr[i]>len - 1)//限定數(shù)字大小
        {
            return 0;
        }
       while (arr[i] != i)
        {
            if (arr[i] != i)
            {
                if (arr[i] != arr[arr[i]])//數(shù)組中數(shù)字是否等于以數(shù)字為下標的數(shù)字
                {
                    Swap(&arr[i], &arr[arr[i]]);
                }
                else
                {
                    return arr[i];
                }
            }
        }
    }
    return 0;
}
int main()
{
    int arr[] = {2,3,1,0,2,5,3};
    printf("%d", duplicate(arr, SIZE(arr)));
    return 0;
}

找出數(shù)組中重復的數(shù)字(c語言)總結:數(shù)組中數(shù)據(jù)給定范圍之后,可以多利用下標 i 進行求解

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前文章:找出數(shù)組中重復的數(shù)字(c語言)-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://muchs.cn/article12/dhehgc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機建站公司、ChatGPT、響應式網(wǎng)站、商城網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)