給出乙個陣列 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 我想到一種和...