中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

阿巴嘎旗| 卓资县| 湘西| 龙江县| 阿克苏市| 玉林市| 闽侯县| 泊头市| 新津县| 莱州市| 绿春县| 托克逊县| 肇庆市| 沙雅县| 辽宁省| 聂荣县| 图木舒克市| 青铜峡市| 无极县| 海淀区| 沈阳市| 鄂托克旗| 运城市| 扎赉特旗| 正镶白旗| 如皋市| 左云县| 井陉县| 浦县| 永清县| 资源县| 津南区| 都江堰市| 佳木斯市| 若羌县| 兴宁市| 屏边| 仪征市| 淮滨县| 富川| 瑞安市|