面試題1 落單的數

2021-06-29 04:23:50 字數 307 閱讀 6085

有2n+1個數,其中2n個數兩兩成對,1個數落單,找出這個數。要求o(n)的時間複雜度,o(1)的空間複雜度。

高階問題:如果有2n+2個數,其中有2個數落單,該怎麼辦?

答:初階:將2n+1個數異或起來,相同的數會抵消,異或的答案就是要找的數。

高階:假設兩個不同的數是a和b,並且a!=b,將2n+2個數異或起來就會得到c=a xor b,並且c不等於0。因此在c的二進位制位中找到乙個為1的位,可推斷在這位上a和b分別為0和1,因此將2n+2個數分為該位位0的組和該位為1的組,兩組中各自會包含2n』+1個數和2n』』+1個數,用初階的演算法即可解決。

面試題1 落單的數

問題詳情 有2n 1個數,其中2n個數兩兩成對,1個數落單,找出這個數。要求o n 的時間複雜度,o 1 的空間複雜度。高階問題 如果有2n 2個數,其中有2個數落單,該怎麼辦?解答 答 初階 將2n 1個數異或起來,相同的數會抵消,異或的答案就是要找的數。高階 假設兩個不同的數是a和b,並且a b...

九章演算法面試題1 落單的數

初階 有2n 1個數,其中2n個數兩兩成對,1個數落單,找出這個數。要求o n 的時間複雜度,o 1 的空間複雜度。高階 如果有2n 2個數,其中有2個數落單,該怎麼辦?初階 將2n 1個數異或起來,相同的數會抵消,異或的答案就是要找的數。高階 假設兩個不同的數是a和b,並且a b,將2n 2個數異...

面試題1 兩數之和 1

題目 給定乙個整型陣列,能否找到找出其中的兩個數使其和為某個指定的值?這個陣列是無序的 直接實現 暴力解決 暴力破解,o n 2 的時間複雜度 func hassum arr int,target int bool return false 書中給出的核心思想是 先將無序的進行排序 從小到大 然後首...