国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【舉一反三】只出現(xiàn)一次的數(shù)字

這篇具有很好參考價值的文章主要介紹了【舉一反三】只出現(xiàn)一次的數(shù)字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?本文,講位運算——異或運算。因為題干中說明要線性時間復(fù)雜度,所以采用位運算進行操作,而沒有采用哈希表。


目錄

1.只出現(xiàn)一次的數(shù)字 I

?2.只出現(xiàn)一次的數(shù)字 II

?3.只出現(xiàn)一次的數(shù)字 III


1.只出現(xiàn)一次的數(shù)字 I

136. 只出現(xiàn)一次的數(shù)字 - 力扣(LeetCode)

題目:

給你一個 非空整數(shù)數(shù)組 nums ,除了某個元素只出現(xiàn)一次以外,其余每個元素均出現(xiàn)兩次。找出那個只出現(xiàn)了一次的元素。

你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法來解決此問題,且該算法只使用常量額外空間

示例 1 :

輸入:nums = [2,2,1]

輸出:1

從一個成對數(shù)組中找到落單的元素。很顯然我們可以使用異或運算。(相同為0,不同為1)

  • 兩個相同數(shù)字做異或運算,結(jié)果為0??梢詭臀覀兣懦舫蓪Φ臄?shù)字。
  • 0和任何數(shù)字進行異或運算,都得到這個數(shù)字本身。

代碼:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int value=0;
        for(auto e:nums)
        {
            value^=e;
        }
        return value;
    }
};

?2.只出現(xiàn)一次的數(shù)字 II

137. 只出現(xiàn)一次的數(shù)字 II - 力扣(LeetCode)?

題目:

給你一個整數(shù)數(shù)組?nums ,除某個元素僅出現(xiàn) 一次 外,其余每個元素都恰出現(xiàn) 三次 。請你找出并返回那個只出現(xiàn)了一次的元素。

你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法且不使用額外空間來解決此問題。

示例 1:

輸入:nums = [2,2,3,2]

輸出:3?

????????本題,如果我們繼續(xù)簡單的使用異或,我們會發(fā)現(xiàn)最后結(jié)果是2^3,沒辦法得到正確答案。我們可以換個思路題中強調(diào)每個元素恰好出現(xiàn)三次,我們從次數(shù)的角度出發(fā),考慮該位值為1的次數(shù)取模。

????????數(shù)的每一位只有0或1。首先我們考慮第一位,再依次類推直到第32位結(jié)束,答案元素的每一位為0或者為1我們都是已知,即得到該答案元素。

如果非答案元素第一位為0,則有:

  • 答案元素第一位為0,總共0個1,0%3=0
  • 答案元素第一位為1,總共1個1,1%3=1

如果非答案元素第一位為1,則有:

  • 答案元素第一位為0,總共3個1,3%3=0
  • 答案元素第一位為1,總共4個1,4%3=1

例子:?

【舉一反三】只出現(xiàn)一次的數(shù)字

代碼:?

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res=0;
        for(int i=0;i<32;i++)
        {
            int sum=0;    //統(tǒng)計值為1的次數(shù)
            for(auto& e:nums)
            {
                sum+=((e>>i)&1);
            }
            if((sum%3)==1)
            {
                res|=(1<<i);    //與0移位或運算
            }
        }
        return res;
    }
};

時間復(fù)雜度:O(n logC),其中n是數(shù)組長度,C是數(shù)據(jù)范圍,本題int數(shù)據(jù)類型,logC=32。

空間復(fù)雜度:O(1)

?3.只出現(xiàn)一次的數(shù)字 III

260. 只出現(xiàn)一次的數(shù)字 III - 力扣(LeetCode)

題目:

給你一個整數(shù)數(shù)組?nums,其中恰好有兩個元素只出現(xiàn)一次,其余所有元素均出現(xiàn)兩次。 找出只出現(xiàn)一次的那兩個元素。你可以按 任意順序 返回答案。

你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法且僅使用常量額外空間來解決此問題。

示例 1:?

輸入:nums = [1,2,1,3,2,5]

輸出:[3,5]

解釋:[5, 3] 也是有效的答案。

? ? ? ? 本題,還是在異或運算的基礎(chǔ)上進行拓展,我們觀察題目可以發(fā)現(xiàn),這道題目對所有元素異或后的結(jié)果也是2個不同的元素進行異或,而其他元素頻數(shù)都是2如題目I一樣消除了。

????????也就是說我們可以直接從異或的結(jié)果得到啟發(fā),某位值為1,就表明兩個答案在該位的值不同。我們可以從這個角度為出發(fā)點進行切入,對數(shù)組分組!兩個答案一定在不同的組中。

思路:

已知x^x==0。定義數(shù)組的異或和為該數(shù)組所有元素的異或。

  • 求出nums的異或和xor,可知xor為兩個目標元素的異或。
  • 找到xor中為1的二進制位,假設(shè)是第k位。這說明兩個目標元素在第k位上不相同。
  • 根據(jù)第k位是0還是1,把nums分為兩組,這樣兩個目標元素一定位于不同的組。
  • 分別求出兩組的異或和,即得到兩個目標元素。

例子:?

【舉一反三】只出現(xiàn)一次的數(shù)字?代碼:

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        vector<int>ans(2);
        int value=0;
        for(auto& e:nums)
        {
            value^=e;
        }
        int k=0;
        while((value&1)==0)
        {
            value>>=1;
            ++k;
        }
        int ans1=0,ans2=0;
        for(auto&e:nums)
        {
            if(((e>>k)&1)==0)
            {
                ans1^=e;
            }
            else
            {
                ans2^=e;
            }
        }
        ans[0]=ans1;
        ans[1]=ans2;
        return ans;
    }
};

【舉一反三】只出現(xiàn)一次的數(shù)字

?文章來源地址http://www.zghlxwxcb.cn/news/detail-413616.html

到了這里,關(guān)于【舉一反三】只出現(xiàn)一次的數(shù)字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 人工智能時代的十大核心技術(shù):重塑未來的無限可能 - 第三章 - 遷移學(xué)習(xí),讓AI更聰明地“舉一反三”

    人工智能時代的十大核心技術(shù):重塑未來的無限可能 - 第三章 - 遷移學(xué)習(xí),讓AI更聰明地“舉一反三”

    遷移學(xué)習(xí):讓AI更聰明地“舉一反三” 在人工智能(AI)的世界里,遷移學(xué)習(xí)正成為一種強大的工具,它讓機器能夠像人類一樣“舉一反三”,將在一個領(lǐng)域?qū)W到的知識應(yīng)用到另一個領(lǐng)域。這種技術(shù)的出現(xiàn),不僅極大地簡化了AI系統(tǒng)的訓(xùn)練過程,還顯著提高了其學(xué)習(xí)新任務(wù)的速

    2024年01月24日
    瀏覽(24)
  • 只出現(xiàn)一次的數(shù)字

    問題: 給你一個? 非空 ?整數(shù)數(shù)組? nums ?,除了某個元素只出現(xiàn)一次以外,其余每個元素均出現(xiàn)兩次。找出那個只出現(xiàn)了一次的元素。 你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法來解決此問題,且該算法只使用常量額外空間。 示例: 示例 1 : 示例 2 : 示例 3 : 思想: 由于

    2024年02月07日
    瀏覽(23)
  • 只出現(xiàn)一次的數(shù)字——力扣136
  • leetcode-136. 只出現(xiàn)一次的數(shù)字

    題意描述: 給你一個 非空 整數(shù)數(shù)組 nums ,除了某個元素只出現(xiàn)一次以外,其余每個元素均出現(xiàn)兩次。找出那個只出現(xiàn)了一次的元素。 你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法來解決此問題,且該算法只使用常量額外空間。 示例: 輸入:nums = [2,2,1] 輸出:1 輸入:nums = [4,

    2024年02月07日
    瀏覽(18)
  • leetcode之只出現(xiàn)一次的數(shù)字

    leetcode之只出現(xiàn)一次的數(shù)字

    今天為大家分享的是關(guān)于在數(shù)組中找到只出現(xiàn)一次數(shù)字的系列題目,我將使用c跟Java來實現(xiàn),希望我的分享能夠幫助到大家。 第一道題目是一個數(shù)組中只出有一個出現(xiàn)了一次的數(shù)字,也就是有一個單身狗。這是題目鏈接leetcode之只出現(xiàn)一次的數(shù)字 題目要求: 給你一個 非空 整

    2023年04月09日
    瀏覽(21)
  • 每日一題——只出現(xiàn)一次的數(shù)字

    每日一題——只出現(xiàn)一次的數(shù)字

    題目鏈接 要求為線性時間復(fù)雜度,即 時間復(fù)雜度為O(n) ,那么我們就不能用簡單的兩層循環(huán)來解決問題 要求只能使用常量額外空間,即 空間復(fù)雜度為O(1) ,那么我們就不能額外開辟一個數(shù)組來記錄每個元素出現(xiàn)的次數(shù) 這里,給大家介紹一個全新的方法:位運算——異或^ 注

    2024年02月15日
    瀏覽(19)
  • leetcode:只出現(xiàn)一次的數(shù)字 Ⅲ(詳解)

    leetcode:只出現(xiàn)一次的數(shù)字 Ⅲ(詳解)

    前言:內(nèi)容包括:題目,代碼實現(xiàn),大致思路,代碼解讀 給你一個整數(shù)數(shù)組?nums,其中恰好有兩個元素只出現(xiàn)一次,其余所有元素均出現(xiàn)兩次。 找出只出現(xiàn)一次的那兩個元素。你可以按 任意順序 返回答案。 你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法且僅使用常量額外空間來

    2023年04月09日
    瀏覽(23)
  • leetcode 137. 只出現(xiàn)一次的數(shù)字 II

    給你一個整數(shù)數(shù)組 nums ,除某個元素僅出現(xiàn) 一次 外,其余每個元素都恰出現(xiàn) 三次 。請你找出并返回那個只出現(xiàn)了一次的元素。 你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法且使用常數(shù)級空間來解決此問題。 示例 1: 輸入:nums = [2,2,3,2] 輸出:3 示例 2: 輸入:nums = [0,1,0,1,0,1,

    2024年02月09日
    瀏覽(21)
  • lc137. 只出現(xiàn)一次的數(shù)字 II

    lc137. 只出現(xiàn)一次的數(shù)字 II

    ? 數(shù)組排序 ,既和前不一樣又和后不一樣的就是唯一的一個 哈希表 位運算? ? 只有一個數(shù)出現(xiàn)了一次,其他數(shù)都出現(xiàn)了三次,那么別的數(shù)的 每個二進制位 加起來的和除3一定為0。 所以如果某個二進制位取余3不為0那么這個數(shù)就是所要求的答案的某個二進制位,再把它導(dǎo)出來

    2024年02月13日
    瀏覽(16)
  • 【vector題解】只出現(xiàn)一次的數(shù)字 | 電話號碼的數(shù)字組合

    【vector題解】只出現(xiàn)一次的數(shù)字 | 電話號碼的數(shù)字組合

    力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺 給你一個整數(shù)數(shù)組 nums ,其中恰好有兩個元素只出現(xiàn)一次,其余所有元素均出現(xiàn)兩次。 找出只出現(xiàn)一次的那兩個元素。你可以按 任意順序 返回答案。 你必須設(shè)計并實現(xiàn)線性時間復(fù)雜度的算法且僅使用常量額外空間來解決此

    2024年02月06日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包