尋找重複的數 LintCode

2021-08-10 15:21:37 字數 704 閱讀 8405

給出乙個陣列 nums 包含 n + 1 個整數,每個整數是從 1 到 n (包括邊界),保證至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。

注意事項:

不能修改陣列(假設陣列只能讀)

只能用額外的o(1)的空間

時間複雜度小於o(n^2)

陣列中只有乙個重複的數,但可能重複超過一次

樣例:

給出 nums = [5,5,4,3,2,1],返回 5.

給出 nums = [5,4,4,3,2,1],返回 4.

思路:

由於陣列大小n+1,元素的取值範圍1~n,可以建立下標到陣列元素的對映,同時陣列元素也可以作為下標,例如,對映關係為->1,1->2,2->3,會形成環。

參考 單鏈表判斷是否有環且求環入口

可以求出對映中環的入口,也就是重複數字。

#ifndef c633_h

#define c633_h

#include

#include

using

namespace

std;

class solution while (slow != fast);

fast = 0;

while (fast != slow)

return fast;

}};#endif

陣列 尋找重複的數 中等

描述 給出乙個陣列 nums 包含 n 1 個整數,每個整數是從 1 到 n 包括邊界 保證至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。1.不能修改陣列 假設陣列只能讀 2.只能用額外的o 1 的空間 3.時間複雜度小於o n 2 4.陣列中只有乙個重複的數,但可能重複超過一次...

LintCode 570 尋找丟失的數 II

給乙個由 1 n的整數隨機組成的乙個字串序列,其中丟失了乙個整數,請找到它。注意事項 n 30 樣例 給出 n 20,str 19201234567891011121314151618 丟失的數是17,返回這個數。思路 回溯法進行深度優先搜尋,需要注意的幾點 數字的越界檢查,找到的數字的計數 不計數...

尋找重複數

出自 leetcode 287,給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2 示例 2 輸入 3,1,3,4,2 輸出 3 我想到一種和...