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

【劍指offer】數(shù)組中重復(fù)的數(shù)字

這篇具有很好參考價值的文章主要介紹了【劍指offer】數(shù)組中重復(fù)的數(shù)字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【劍指offer】數(shù)組中重復(fù)的數(shù)字,# 劍指offer,Java,劍指offer

  • ??專欄內(nèi)容:力扣刷題
  • ?個人主頁:子夜的星的主頁
  • ??座右銘:前路未遠(yuǎn),步履不停


一、題目描述

1、題目

劍指offer:數(shù)組中重復(fù)的數(shù)字

在一個長度為 n 的數(shù)組里的所有數(shù)字都在 0 0 0 n ? 1 n-1 n?1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù),也不知道每個數(shù)字重復(fù)了幾次。請找出數(shù)組中任意一個重復(fù)的數(shù)字。例如,如果輸入長度為7的數(shù)組 [ 2 , 3 , 1 , 0 , 2 , 5 , 3 ] [2,3,1,0,2,5,3] [2,3,1,0,2,5,3],那么對應(yīng)的輸出是2或者3。存在不合法的輸入的話輸出-1。

數(shù)據(jù)范圍: 0 ≤ n ≤ 10000 0≤n≤10000 0n10000
進(jìn)階:時間復(fù)雜度 O ( n ) O(n) O(n) ,空間復(fù)雜度 O ( n ) O(n) O(n)

2、示例

輸入:[2,3,1,0,2,5,3]
返回值:2
說明:2或3都是對的

二、題目分析

題目的意思非常簡單,一句話總結(jié)就是:一個特定范圍內(nèi)的數(shù)組中找到任意一個重復(fù)的數(shù)字。

1、雙重for循環(huán)

public class Solution {
    public static int duplicate(int[] numbers) {
        for(int i =0;i<numbers.length;i++){
            for (int j = i+1; j <numbers.length ; j++) {
                if(numbers[i] == numbers[j])
                    return numbers[i];
            }
        }
        return -1;
    }
}

通過循環(huán)來比較數(shù)組中的每一對元素來查找重復(fù)。

時間復(fù)雜度是 O ( n 2 ) O(n^2) O(n2):因為有兩個嵌套循環(huán),每個循環(huán)都遍歷整個數(shù)組。
空間復(fù)雜度是 O ( 1 ) O(1) O(1):沒有使用除了輸入數(shù)組之外的額外空間。

2、for-each 循環(huán)

public class Solution {
    public static int duplicate(int[] numbers) {
        int [] res = new int[numbers.length];
        for(int i:numbers){
            res[i]++;
            if(res[i] > 1){
                return i;
            }
        }
        return -1;
    }
}

使用一個額外的數(shù)組來記錄每個數(shù)字出現(xiàn)的次數(shù)。一旦某個數(shù)字的出現(xiàn)次數(shù)超過1,就立即返回該數(shù)字。在時間上更高效,但犧牲了一些空間來達(dá)到這個目的。

時間復(fù)雜度: O ( n ) O(n) O(n)。只有一個循環(huán),遍歷一次數(shù)組。
空間復(fù)雜度: O ( n ) O(n) O(n)。使用了一個與輸入數(shù)組同等大小的額外數(shù)組來記錄每個數(shù)字出現(xiàn)的次數(shù)。

3、set集合

public class Solution {
    public static int duplicate(int[] numbers) {
        Set<Integer> set = new HashSet<Integer>();
        for(int i : numbers){
            if(set.contains(i)){
                return i;
            }else{
                set.add(i);
            }
        }
        return -1;
    }
}

創(chuàng)建一個 HashSet,在循環(huán)內(nèi)部,首先檢查當(dāng)前元素 i 是否已經(jīng)在 set 中:

  • 如果 set 已包含 i,則返回 i 作為第一個重復(fù)的元素。
  • 如果 set 不包含 i,則將 i 添加到 set 中,然后繼續(xù)循環(huán)。

時間復(fù)雜度是 O ( n ) O(n) O(n),空間復(fù)雜度是 O ( n ) O(n) O(n):使用了一個額外的 HashSet 來存儲元素。在最壞情況下(沒有重復(fù)元素),這個集合將包含所有 n 個元素。文章來源地址http://www.zghlxwxcb.cn/news/detail-807075.html

到了這里,關(guān)于【劍指offer】數(shù)組中重復(fù)的數(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    ?個人主頁:bit me?? ?當(dāng)前專欄:算法訓(xùn)練營?? 核心考點:數(shù)組理解,二分查找,臨界條件 描述: 有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進(jìn)行旋轉(zhuǎn),即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉(zhuǎn)數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這

    2023年04月20日
    瀏覽(20)
  • 劍指offer面試題8 旋轉(zhuǎn)數(shù)組的最小數(shù)字

    分析 首先一定要記住只要看到排序數(shù)組的查找,思維一定要往二分法上靠,然后再思考清楚如何利用二分法。而如何利用二分法一定要仔細(xì)分析所給的數(shù)組的特點:遞增數(shù)組且最開始的若干元素搬到數(shù)組的末尾,相當(dāng)于該數(shù)組由倆個遞增小數(shù)組構(gòu)成,前面的數(shù)組元素肯定大于

    2024年01月24日
    瀏覽(19)
  • 劍指 Offer 11. && LeetCode 154. 旋轉(zhuǎn)數(shù)組的最小數(shù)字

    參考資料:LeetCode 官方解答 劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字 把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。 給你一個可能存在 重復(fù) 元素值的數(shù)組 numbers ,它原來是一個升序排列的數(shù)組,并按上述情形進(jìn)行了一次旋轉(zhuǎn)。請返回旋轉(zhuǎn)數(shù)組的最小元素

    2024年02月09日
    瀏覽(21)
  • 劍指offer39.數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

    劍指offer39.數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

    這個題非常簡單,解法有很多種,我用的是HashMap記錄每個元素出現(xiàn)的次數(shù),只要次數(shù)大于數(shù)組長度的一半就返回。下面是我的代碼: 題解還有一種更牛逼的解法,把數(shù)組排序,然后返回數(shù)組中間的那個數(shù)就行,因為如果這個數(shù)出現(xiàn)的次數(shù)大于數(shù)組長度的一半的話,排完序后

    2024年02月13日
    瀏覽(25)
  • 劍指 Offer 39.數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

    劍指 Offer 39.數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字 給定一個大小為 n 的數(shù)組 nums ,返回其中的多數(shù)元素。多數(shù)元素是指在數(shù)組中出現(xiàn)次數(shù) 大于 ? n/2 ? 的元素。 你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。 示例 1: 輸入:nums = [3,2,3] 輸出:3 示例 2: 輸入:n

    2024年01月21日
    瀏覽(19)
  • 劍指 Offer 56 - I. 數(shù)組中數(shù)字出現(xiàn)的次數(shù)

    劍指 Offer 56 - I. 數(shù)組中數(shù)字出現(xiàn)的次數(shù)

    理想的人物不僅要在物質(zhì)需要的滿足上,還要在精神旨趣的滿足上得到表現(xiàn)。? ? ? ? —— 黑格爾 目錄 方法1:排序+指針 方法2:異或整個數(shù)組 題目: 一個整型數(shù)組? nums ?里除兩個數(shù)字之外,其他數(shù)字都出現(xiàn)了 兩次 。請寫程序找出這兩個 只出現(xiàn)一次的數(shù)字。 要求時間復(fù)

    2023年04月16日
    瀏覽(21)
  • 劍指 Offer 39. 數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

    ?? 作者簡介:一名在后端領(lǐng)域?qū)W習(xí),并渴望能夠?qū)W有所成的追夢人。 ?? 個人主頁:不 良 ?? 系列專欄:??劍指 Offer ???Linux ?? 學(xué)習(xí)格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進(jìn)來的小伙伴,如果小伙伴們在學(xué)習(xí)的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請指正,希望能夠與諸

    2024年02月07日
    瀏覽(27)
  • Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。 給你一個可能存在?重復(fù)?元素值的數(shù)組?numbers?,它原來是一個升序排列的數(shù)組,并按上述情形進(jìn)行了一次旋轉(zhuǎn)。請返回旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組?[3,4,5,1,2] 為 [1,2,3,4,5] 的一次旋轉(zhuǎn),該數(shù)組的

    2024年02月14日
    瀏覽(21)
  • 劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

    劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

    題目來源 劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I 初始化: 左邊界 i=0 ,右邊界 j=nums.length?1。 循環(huán)二分: 當(dāng)閉區(qū)間 [i, j] 無元素時跳出; 計算中點 m=(i+j)/2 (向下取整); 若 nums[m]target,則 target 在閉區(qū)間 [m+1,j] 中,因此執(zhí)行 i=m+1; 若 nums[m]target,則 target 在閉區(qū)間 [i,m?

    2024年02月01日
    瀏覽(23)
  • 劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II(位運(yùn)算 / 哈希表 / 排序)

    鏈接:劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II 難度:中等 在一個數(shù)組 nums 中除一個數(shù)字只出現(xiàn)一次之外,其他數(shù)字都出現(xiàn)了三次。請找出那個只出現(xiàn)一次的數(shù)字。 示例 1: 輸入:nums = [3,4,3,3] 輸出:4 示例 2: 輸入:nums = [9,1,7,9,7,9,7] 輸出:1 限制: 1 = nums.length = 10000 1

    2024年02月13日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包