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

溫馨提示×

溫馨提示×

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

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

LeetCode如何找出數組中重復的數字

發布時間:2021-12-15 14:05:30 來源:億速云 閱讀:148 作者:小新 欄目:大數據

這篇文章主要介紹LeetCode如何找出數組中重復的數字,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

題目描述

在一個長度為n的數組里的所有數字都在0到n-1的范圍內。數組中某些數字是重復的,但不知道有幾個數字是重復的。也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出是第一個重復的數字2。

思路

數組中的數字都在0到n-1的數字范圍內。如果數組中沒有重復出現的數字,那么當數組排序后數字i就出現在數組中下標為i的元素處。那么數組中如果存在重復數字的話,有些位置的對應的數字就沒有出現,而有些位置可能存在多個數字。數組用numbers表示 那么我們重排這個數組。從第0個元素開始。

1.比較numbers[i]和i的值,如果i與numbers[i]相等,也就是對數組排序后,numbers[i]就應該在對應的數組的第i個位置處,那么繼續判斷下一個位置。2.如果i和numbers[i]的值不相等,那么判斷以numbers[i]為下標的數組元素是什么。

1.如果numbers[numbers[i]]等于numbers[i]的話,那么就是說有兩個相同的值了,重復了。找到了重復的數字2.如果numbers[numbers[i]]不等于numbers[i]的話,那么就將numbers[numbers[i]]和numbers[i]互換。繼續進行1的判斷。

3.循環退出的條件是直至數組最后一個元素,仍沒有找到重復的數字,數組中不存在重復的數字。

代碼實現

package Array;
/** * 數組中重復的數字 *在一個長度為n的數組里的所有數字都在0到n-1的范圍內。 * 數組中某些數字是重復的,但不知道有幾個數字是重復的。也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 * 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出是第一個重復的數字2。 * 思路: * 數組中的數字都在0到n-1的數字范圍內。如果數組中沒有重復出現的數字,那么當數組排序后數字i就出現在數組中下標為i的元素處。那么數組中如果存在重復數字的話,有些位置的對應的數字就沒有出現,而有些位置可能存在多個數字。數組用numbers表示 那么我們重排這個數組。從第0個元素開始。 1、比較numbers[i]和i的值,如果i與numbers[i]相等,也就是對數組排序后,numbers[i]就應該在對應的數組的第i個位置處,那么繼續判斷下一個位置。 2、如果i和numbers[i]的值不相等,那么判斷以numbers[i]為下標的數組元素是什么。 2.1、如果numbers[numbers[i]]等于numbers[i]的話,那么就是說有兩個相同的值了,重復了。找到了重復的數字 2.2、如果numbers[numbers[i]]不等于numbers[i]的話,那么就將numbers[numbers[i]]和numbers[i]互換。繼續進行1的判斷。 3、循環退出的條件是直至數組最后一個元素,仍沒有找到重復的數字,數組中不存在重復的數字。 */public class Solution02 {    // Parameters:    //    numbers:     an array of integers    //    length:      the length of array numbers    //    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;    //                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++    //    這里要特別注意~返回任意重復的一個,賦值duplication[0]    // Return value:       true if the input is valid, and there are some duplications in the array number    //                     otherwise false    public static void main(String[] args) {        int[] arr ={2,3,1,0,2,5,3};        int[] duplication = {-1};        duplicate(arr,arr.length,duplication);        System.out.println(duplication[0]);    }    public static boolean duplicate(int numbers[],int length,int [] duplication) {        if(length<=0||numbers==null){            return false;        }        //判斷數組數據是否合法        for(int i=0;i<length;i++){            if(numbers[i]<0||numbers[i]>length-1){                return false;            }        }
       for(int i=0;i<length;i++){            while(numbers[i]!=i){                if(numbers[i]==numbers[numbers[i]]){                    duplication[0] = numbers[i];                    return true;                }else{                    //交換numbers[i]和numbers[numbers[i]]                    int temp = numbers[i];                    numbers[i] = numbers[temp];                    numbers[temp] = temp;                }            }        }        return false;    }}

以上是“LeetCode如何找出數組中重復的數字”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

栾川县| 罗田县| 沅陵县| 永宁县| 阿克苏市| 黑水县| 镇雄县| 菏泽市| 芜湖市| 堆龙德庆县| 江陵县| 阿鲁科尔沁旗| 镶黄旗| 湘阴县| 五华县| 革吉县| 孟村| 高尔夫| 苗栗市| 图们市| 习水县| 沐川县| 筠连县| 山东省| 阿拉善右旗| 永泰县| 崇明县| 景谷| 遂溪县| 湛江市| 汪清县| 共和县| 和平县| 安泽县| 沿河| 资阳市| 梅州市| 丹凤县| 元氏县| 广河县| 宁阳县|