難度:簡單
class solution時間複雜度:o(n),空間複雜度:o(n)。return -1;}}
遍歷陣列並通過交換操作,使元素的索引與值一一對應(即 nums[i] = i
)遍歷中,第一次遇到數字 x 時,將其交換至索引 x 處;而當第二次遇到數字 x 時,一定有 nums[x] = x,此時即可得到一組重複數字。
class solution時間複雜度:o(n),空間複雜度:o(1)。if(nums[nums[i]] == nums[i]) return nums[i];
int tmp = nums[i];
nums[i] = nums[tmp];
nums[tmp] = tmp;
}return -1;}}
使用二分法分別找到左邊界 left和右邊界 right,易得數字 target 的數量為right - left - 1。
class solution時間複雜度:o(logn),空間複雜度:o(1)。int right = i;
// 若陣列中無 target ,則提前返回
if(j >= 0 && nums[j] != target) return 0;
// 搜尋左邊界 right
i = 0; j = nums.length - 1;
while(i <= j)
int left = j;
return right - left - 1;}}
排序陣列中的搜尋問題,首先想到二分法解決。根據題意,陣列可以按照以下規則劃分為兩部分。
缺失的數字等於「右子陣列的首位元素」對應的索引;因此考慮使用二分法查詢 「右子陣列的首位元素」 。
class solution時間複雜度:o(logn),空間複雜度:o(1)。return i;}}
每日一刷 劍指offer 一 二維陣列中的查詢
為提公升coding能力,開啟每日一刷,每天至少完成1道題目,並將自己的總結思考記錄於此。題目 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。嘗試解法 暴力...
劍指offer每日一刷 2023年11月20日
題目名稱 矩形覆蓋 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?從題目描述可知,這也是一道斐波那契數列的題目 f n f n 1 f n 2 題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個...
劍指offer每日一刷 2023年11月24日
題目 鍊錶中倒數第k個接點 題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。鍊錶的定義 public class listnode 方法一 建立兩個指標pre和last,先讓兩者均指向頭結點,然後讓pre指標走k 1步,指向第k個節點,這樣pre和last就相差k 1個結點,last就指向pre...