找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字
生活随笔
收集整理的這篇文章主要介紹了
找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
在一個長度為 n 的數組里的所有數字都在 0 到 n-1 的范圍內。數組中某些數字是重復的,但不知道有幾個數字是重復的,也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。
Input:{2, 3, 1, 0, 2, 5}Output:2解題思路
要求時間復雜度 O(N),空間復雜度 O(1)。因此不能使用排序的方法,也不能使用額外的標記數組。
對于這種數組元素在 [0, n-1] 范圍內的問題,可以將值為 i 的元素調整到第 i 個位置上進行求解。本題要求找出重復的數字,因此在調整過程中,如果第 i 位置上已經有一個值為 i 的元素,就可以知道 i 值重復。
以 (2, 3, 1, 0, 2, 5) 為例,遍歷到位置 4 時,該位置上的數為 2,但是第 2 個位置上已經有一個 2 的值了,因此可以知道 2 重復:
public boolean duplicate(int[] nums, int length, int[] duplication) { if (nums == null || length <= 0) return false; for (int i = 0; i < length; i++) { while (nums[i] != i) { if (nums[i] == nums[nums[i]]) { duplication[0] = nums[i]; return true; } swap(nums, i, nums[i]); } } return false;}private void swap(int[] nums, int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t;} 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: element vue 获取select
- 下一篇: vba 判断文本框内容是否为空_校验数据