時間複雜度o(nlogn),空間複雜度o(1)
給定乙個包含 0, 1, 2, ..., n 中 n 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。
示例 1:輸入: [3,0,1]
輸出: 2
示例 2:先排序,後二分輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8
說明:你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?
排除特殊情況;
排序;二分法,但是有所改變,而且有很多特殊情況需要判斷;
如果當前索引等於索引對應的值,並且不是最後乙個,則繼續往後二分,若是最後乙個,即缺了最後乙個數;
如果當前索引小於索引對應的值,並且是第乙個數字,則缺了0。若不是第乙個數,並且前乙個索引也小於其對應的值,則繼續往前二分,若前乙個索引等於其對應的值,則當前索引就是缺了的數。
class solution
begin = mid + 1;
} if(nums[mid] > mid)
if(nums[mid-1] > mid - 1) end = mid - 1;
}if(mid == 0)}}
return result;}};
20 4 11 移動零 簡單
時間複雜度o n 空間複雜度o 1 給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。從前往後遍歷,遍歷時不斷更新零的數量,每個數...
leetcode 陣列 簡單 缺失數字
給定乙個包含0,1,2,n中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2 示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8額外要求 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?在不考慮線性時間複雜度的前提下,使用排序...
20 4 11 驗證回文串 簡單
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 先整理好字串,字串改為只有小寫字...