劍指Offer1 0 n 1中缺失的數字

2022-09-10 17:06:19 字數 723 閱讀 5176

題目:

乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。

思路:首先就是遍歷:

class

solution

for (int i = 0; i < nums.length; i++)

}return res==-1?nums.length:res;

}}

注意點:如果遍歷結束res仍為初始值-1,則認為沒有找到位置錯誤的元素,缺失元素為nums.length

思考:

class

solution

else

}if (nums[beg] !=beg)

else

if (nums[end] !=end)

else

}}

因為二分結束的下標問題一致搞錯,提交了幾次都有問題,最後想了個辦法特殊處理,就是遍歷到只剩2個元素時退出,分別判斷左右是否錯位,如果都正確則返回右邊下標+1(即陣列缺少最大值)

class

solution

//不相範圍區域向左靠攏

else

}return

left;

}}

初步看下來應該是左標+中值的偏移量來解決可能存在的下標越界,後面再仔細地學一下

劍指Offer之0 n 1中缺失的數字

題目描述 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。思路分析 可以考慮用二分法來解決問題 令mid left right 2 public intmissingnumber i...

劍指offer53題 0 n 1中缺失的數字

乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。示例 1 輸入 0,1,3 輸出 2 示例 2 輸入 0,1,2,3,4,5,6,7,9 輸出 8 1.從0判斷到陣列最後一位,如果下...

劍指Offer II 0 n 1中缺失的數字

乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。兩種思路都試一下,現在就能更明確力扣的判時就假的一批。二分法竟然比順序找還慢 重點說下二分法的思路 演算法解析 返回值 跳出時,變數 ...