摘要:
【二分查找】35. 搜索插入位置 知识点:数组,二分查找; 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 输入: nums = [1,3,5,6], tar 阅读全文
摘要:
二分查找 1.概念 如果想要在数组中查找一个数,最基本的方法就是暴力解法:一次遍历,这时候时间复杂度是O(N),二分查找就是其中的一种优化,时间复杂度是O(logN);具体做法是一步一步逼近直到找到。前提是数组需要是一个排序数组。 定义:二分查找也称折半查找(Binary Search),是一种在有 阅读全文
摘要:
剑指 Offer 53 - II. 0~n-1中缺失的数字 知识点:数组,二分查找; 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 输入: [0,1,3] 输出: 阅读全文
摘要:
剑指 Offer 53 - I. 在排序数组中查找数字 I 知识点:数组,二分查找; 题目描述 统计一个数字在排序数组中出现的次数。 示例 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 输入: nums = [5,7,7,8,8,10], target = 阅读全文
摘要:
74. 搜索二维矩阵 知识点:数组,二分查找; 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 link 输入:matrix = [[1,3,5,7],[10,11, 阅读全文
摘要:
153. 寻找旋转排序数组中的最小值 知识点:数组,二分查找; 题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1, 阅读全文
摘要:
81. 搜索旋转排序数组 II 知识点:数组,二分查找; 题目描述 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+ 阅读全文