題目:
乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。
思路:首先就是遍歷:
classsolution
for (int i = 0; i < nums.length; i++)
}return res==-1?nums.length:res;
}}
注意點:如果遍歷結束res仍為初始值-1,則認為沒有找到位置錯誤的元素,缺失元素為nums.length
思考:
classsolution
else
}if (nums[beg] !=beg)
else
if (nums[end] !=end)
else
}}
因為二分結束的下標問題一致搞錯,提交了幾次都有問題,最後想了個辦法特殊處理,就是遍歷到只剩2個元素時退出,分別判斷左右是否錯位,如果都正確則返回右邊下標+1(即陣列缺少最大值)
classsolution
//不相範圍區域向左靠攏
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個數字中有且只有乙個數字不在該陣列中,請找出這個數字。兩種思路都試一下,現在就能更明確力扣的判時就假的一批。二分法竟然比順序找還慢 重點說下二分法的思路 演算法解析 返回值 跳出時,變數 ...