最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言計(jì)算連續(xù)無序數(shù)組中缺省數(shù)字方法詳解

 更新時(shí)間:2023年02月08日 16:02:18   作者:36°熨斗的焦慮日記  
這篇文章主要介紹了C語言計(jì)算連續(xù)無序數(shù)組中缺省數(shù)字方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

求缺省數(shù)字時(shí)可以使用異或進(jìn)行求解,時(shí)間復(fù)雜度為O(N)。

我們都知道,異或的特點(diǎn)就是相同為0,相異為1 ,比如:

這是3和3相異或的結(jié)果,為0, 同樣地,有4^4 = 0,5^5 = 0等等……

這也是我們思考這道題的出發(fā)點(diǎn):

既然相同異或就為0,那么我們是不是只要將此數(shù)組與一個(gè)完整數(shù)組(個(gè)人習(xí)慣稱為完全數(shù)組)挨個(gè)求異或,相同的數(shù)字就會(huì)被異或沒,剩下的那個(gè)數(shù)字(這個(gè)數(shù)字是在完全數(shù)組中留下的)是不是就是題給數(shù)組的缺省數(shù)字?

答案是肯定的:

此時(shí)剩下的數(shù)字就是4即為所求。

但是我們怎么樣用代碼去實(shí)現(xiàn)呢?

本質(zhì)上是兩兩求異或,非要兩個(gè)數(shù)組的數(shù)字對應(yīng)相異或嗎?(1-1,2-2,3-3,5-5,6-6,7-7)

我們可以很快的實(shí)現(xiàn)一個(gè)完全數(shù)組的創(chuàng)建,找到缺省數(shù)組的最小值,往后加(N+1)個(gè)數(shù)便可得到,但是如果題給的數(shù)組是亂序呢?我們無法做到一一對應(yīng)去求異或。

于是,奇妙的異或運(yùn)算便替我們省去了很多步驟。

異或運(yùn)算是有交換律的,即:a⊕b = b⊕a;

難理解的話我們來看一個(gè)例子:

假如現(xiàn)在有一個(gè)數(shù)組:{1,2,1,3,4};其中有兩個(gè) 1 重復(fù)了,我已如果對這個(gè)數(shù)組進(jìn)行兩兩異或結(jié)果是不是應(yīng)該為2^3^4的值呢?

很顯然,異或消去相同數(shù)并不需要對應(yīng),只要讓這個(gè)數(shù)字最終和一個(gè)跟它相同的數(shù)字異或就可以消去;所以,我們可以將完全數(shù)組與缺省數(shù)組混合起來成為一個(gè)數(shù)組兩兩異或,就可以求出那個(gè)缺省數(shù)字。

思想就是這個(gè)樣子,但是在實(shí)現(xiàn)時(shí),如果要將兩個(gè)數(shù)組合并為一個(gè)數(shù)組又得有多余的步驟,所以我的做法是將兩個(gè)數(shù)組各自兩兩異或、得到結(jié)果A和結(jié)果B;再將A與B異或得到缺省數(shù)字。

拙解

#include <stdio.h>
int fun(int arr[], int len);
int main() 
{
    int arr[] = { 78, 79, 81, 83, 82, 84 };
    int len = sizeof(arr) / sizeof(arr[0]);
    int res = fun(arr, len);
    printf("%d\n", res);
    return 0;
}
int fun(int arr[], int len)
{
    int i, j;
    int temp1 = 0, temp2 = 0;
    int min = arr[0];
    //確定完全數(shù)組起始值
    for (i = 0; i < len; i++)
    {
        if (arr[i] < min)
        {
            min = arr[i];
        }
    }
    //對完全數(shù)組進(jìn)行異或
    for (j = min; j < (len + 1)+min; j++)
    {
        temp1 ^= j;
    }
    //對原始(缺數(shù))數(shù)組進(jìn)行異或
    for (i = 0; i < len; i++)
    {
        temp2 ^= arr[i];
    }
    int res = temp1 ^ temp2;
    return res;
}

到此這篇關(guān)于C語言計(jì)算連續(xù)無序數(shù)組中缺省數(shù)字方法詳解的文章就介紹到這了,更多相關(guān)C語言無序數(shù)組中缺省數(shù)字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++利用代理模式實(shí)現(xiàn)遠(yuǎn)程代理,虛擬代理和保護(hù)代理

    C++利用代理模式實(shí)現(xiàn)遠(yuǎn)程代理,虛擬代理和保護(hù)代理

    今天給大家簡單介紹代理模式,一個(gè)很簡單的設(shè)計(jì)模式,旨在不改變原對象的情況下通過代理對象來控制對原對象的訪問。代理模式根據(jù)具體情況還可以分為遠(yuǎn)程代理、虛擬代理、保護(hù)代理等,下面來介紹一下
    2023-04-04
  • C++使用alsa庫實(shí)現(xiàn)播放聲音文件

    C++使用alsa庫實(shí)現(xiàn)播放聲音文件

    這篇文章主要為大家詳細(xì)介紹了Linux系統(tǒng)上C++如何使用alsa庫播放聲音文件,文中示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Java C++題解leetcode856括號的分?jǐn)?shù)

    Java C++題解leetcode856括號的分?jǐn)?shù)

    這篇文章主要為大家介紹了Java C++題解leetcode856括號的分?jǐn)?shù)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 基于C語言實(shí)現(xiàn)簡單的掃雷游戲

    基于C語言實(shí)現(xiàn)簡單的掃雷游戲

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本文將利用C語言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • C語言編程題楊氏矩陣算法快速上手示例詳解

    C語言編程題楊氏矩陣算法快速上手示例詳解

    這篇文章主要為大家介紹了C語言編程題楊氏矩陣算法快速上手的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • C語言二叉樹的遍歷示例介紹

    C語言二叉樹的遍歷示例介紹

    大家好,本篇文章主要講的是C語言二叉樹的遍歷示例介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言中結(jié)構(gòu)體和共用體實(shí)例教程

    C語言中結(jié)構(gòu)體和共用體實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體和共用體的相關(guān)資料,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下
    2021-06-06
  • Qt編譯OpenCV的實(shí)現(xiàn)步驟

    Qt編譯OpenCV的實(shí)現(xiàn)步驟

    本文主要介紹了Qt編譯OpenCV的實(shí)現(xiàn)步驟,通過詳細(xì)的步驟和說明,幫助開發(fā)者在Qt環(huán)境中成功集成并編譯OpenCV,從而為各類計(jì)算機(jī)視覺項(xiàng)目提供強(qiáng)大的支持,感興趣的可以了解一下
    2024-01-01
  • C/C++ winsock實(shí)現(xiàn)不同設(shè)備實(shí)時(shí)通訊的示例代碼

    C/C++ winsock實(shí)現(xiàn)不同設(shè)備實(shí)時(shí)通訊的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C/C++如何利用winsock連接實(shí)現(xiàn)不同設(shè)備實(shí)時(shí)通訊,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • 超詳細(xì)VScode調(diào)試教程tasks.json和launch.json的設(shè)置

    超詳細(xì)VScode調(diào)試教程tasks.json和launch.json的設(shè)置

    vscode是一個(gè)輕量級的文本編輯器,但是它的擴(kuò)展插件可以讓他拓展成功能齊全的IDE,這其中就靠的是tasks.json和launch.json的配置,下面這篇文章主要給大家介紹了關(guān)于超詳細(xì)VScode調(diào)試教程tasks.json和launch.json設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論

江山市| 绥德县| 教育| 鹤峰县| 苍溪县| 锦州市| 怀仁县| 固阳县| 蕲春县| 万荣县| 济源市| 金沙县| 嘉荫县| 汶上县| 麻城市| 中方县| 禹州市| 巩义市| 陆丰市| 十堰市| 桐乡市| 科尔| 敖汉旗| 嘉义县| 霍林郭勒市| 乌拉特中旗| 玉田县| 东兰县| 嘉善县| 腾冲县| 奉贤区| 潮安县| 牙克石市| 太白县| 泽库县| 江门市| 桃园市| 云霄县| 策勒县| 旅游| 来安县|