亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

找出數組中重復的數字(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

广元市| 江山市| 丰原市| 鸡泽县| 奇台县| 新营市| 盐亭县| 永平县| 九龙县| 连江县| 花莲县| 原阳县| 辽宁省| 勐海县| 农安县| 安陆市| 突泉县| 麻栗坡县| 密山市| 黄龙县| 闸北区| 荥经县| 额尔古纳市| 敦化市| 汕尾市| 两当县| 西盟| 东乌| 汪清县| 泽普县| 镇雄县| 耒阳市| 江北区| 邹平县| 烟台市| 莆田市| 游戏| 通州区| 马尔康县| 徐闻县| 方山县|