找出陣列中重複的數字

2021-09-12 05:36:07 字數 1129 閱讀 1260

// 面試題3(一):找出陣列中重複的數字

// 題目:在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。陣列中某些數字是重複的。

// 請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,

// 那麼對應的輸出是重複的數字2或者3。

static bool get_duplicate_num1(std::vector& arr, uint32_t& out_data)

auto length = arr.size();

for(auto& d:arr)

}for(uint32_t i = 0; i < length; ++i)

// 交換numbers[i]和numbers[numbers[i]]

auto temp = arr[i];

arr[i] = arr[temp];

arr[temp] = temp;}}

return false;

}// 面試題3(二):不修改陣列找出重複的數字

// 題目:在乙個長度為n+1的陣列裡的所有數字都在1到n的範圍內,所以陣列中至

// 少有乙個數字是重複的。請找出陣列中任意乙個重複的數字,但不能修改輸入的陣列。

// 例如,如果輸入長度為8的陣列,那麼對應的

// 輸出是重複的數字2或者3。

static bool get_duplicate_num2(const std::vector& arr, uint32_t& out_data)

auto length = arr.size();

for(auto& d:arr)

}uint32_t start = 1;

uint32_t end = length - 1;

while(end >= start)

else

break;

}if(count > (middle - start + 1))

else

}return false;

}static uint32_t _count(const std::vector& arr, uint32_t start, uint32_t end)

}return count;

}

找出陣列中重複的數字

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1 的範圍內,或陣列中不包含重複數字,則返回 1 給定 nums 2,3...

找出陣列中重複的數字

在乙個長度為n的陣列中,所有的數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個陣列重複了幾次。請找出陣列中任意乙個重複的數字。例 輸入長度為7的陣列,對應的輸出的重複的數字是2或3。方法1 先排序在查詢 方法2 利用雜湊表 從頭到尾掃瞄每個數字,每掃瞄乙個數...

找出陣列中重複的數字

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 class soluti...