![](https://img-blog.csdnimg.cn/20210512194716441.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
查找
查找
StudyWinter
持续学习
展开
-
【LeetCode刷题】169. 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2======================================================================================================法一...原创 2020-11-02 20:35:19 · 184 阅读 · 0 评论 -
【LeetCode刷题】34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]=============================...原创 2020-11-02 09:43:20 · 109 阅读 · 0 评论 -
【LeetCode刷题】剑指 Offer 53 - I. 在排序数组中查找数字 I
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <= 数组长度 <= 50000注意:本题与主站 34 题相同(仅返回值不同):https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in..原创 2020-11-02 09:38:27 · 120 阅读 · 0 评论 -
【LeetCode刷题】704. 二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示...原创 2020-10-26 22:53:35 · 523 阅读 · 0 评论 -
【二分查找】二分查找总结
1、梳理二分查找:(1)while (left < right) 退出循环的时候有 left == right 成立,因此无需考虑返回 left 还是 right;(2)始终思考下一轮搜索区间是什么,如果是 [mid, right] 就对应 left = mid ,如果是 [left, mid - 1] 就对应 right = mid - 1,是保留 mid 还是 +1+1、-1−1 就在这样的思考中完成;(3)从一个元素什么时候不是解开始考虑下一轮搜索区间是什么 ,把区间分为 2 个部转载 2020-10-26 15:29:15 · 393 阅读 · 0 评论 -
【查找】斐波那契查找
开始看的时候,很懵逼,后来又看了一下思路,又有一些理解了。记录一下。1、斐波那契(黄金分割法)查找基本介绍(1)黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神奇的数字,会带来意向不大的效果。(2)斐波那契数列 {1, 1, 2, 3, 5, 8, 13, 21, 34, 55 } 发现斐波那契数列的两个相邻数 的比例,无限接近黄金分割值0.618原创 2020-10-13 19:38:06 · 3120 阅读 · 2 评论 -
【查找】插值查找
1、插值查找原理介绍(1)插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。(2)将折半查找中的求mid 索引的公式 , low 表示左边索,high表示右边索引,key 就是要查找的值这里要提一下,插值查找的前提是数组是有序的。(3)举例说明插值查找算法 1-100 的数组数组 arr = [1, 2, 3, ......., 100]。假如我们需要查找的值 1,使用二分查找的话,我们需要多次递归,才能找到 1。使用插值查找算法int mid = l原创 2020-10-13 15:08:40 · 354 阅读 · 0 评论 -
【查找】二分查找
1、二分查找请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} ,输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。2、二分查找思路 首先确定该数组的中间的下标mid = (left + right) / 2; 然后让需要查找的数 findVal 和 arr[mid] 比较 (1)findVal > arr[mid] ,说明你要查找的数在mid 的右边, 因此需要递归的向右查找; (2)findVal <原创 2020-10-12 21:46:44 · 297 阅读 · 0 评论