91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

找出數組中重復的數字(c語言)

發布時間:2020-07-20 19:29:07 來源:網絡 閱讀:1038 作者:夢T醒 欄目:編程語言

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


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

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

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

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)//限定數字大小
        {
            return 0;
        }
        while (arr[i] != i)
        {
            if (arr[i] != i)
            {
                if (arr[i] != arr[arr[i]])//數組中數字是否等于以數字為下標的數字
                {
                    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;
}

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梨树县| 大方县| 九台市| 大竹县| 资讯| 土默特右旗| 磴口县| 石景山区| 遵化市| 合作市| 肇庆市| 上犹县| 锡林浩特市| 繁峙县| 成都市| 进贤县| 林周县| 朔州市| 简阳市| 台南市| 新宁县| 黄大仙区| 吉林省| 昆山市| 邻水| 新津县| 金沙县| 兴文县| 长寿区| 若尔盖县| 都江堰市| 广南县| 隆回县| 周口市| 桐乡市| 嘉兴市| 广河县| 周宁县| 临西县| 遂溪县| 晋州市|