算法-搜索
文章平均质量分 76
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
leetcode-035-搜索插入位置
情况 1:如果当前 mid 看到的数值严格小于 target,那么 mid 以及 mid 左边的所有元素就一定不是「插入元素的位置」,因此下一轮搜索区间是 [mid + 1..right],下一轮把 left 移动到 mid + 1 位置,因此设置 left = mid + 1;说明:上面的两点中,「情况 2」其实不用分析得那么细致, 因为只要「情况 1」的区间分析是正确的,「情况 2」一定是「情况 1」得到的区间的反面区间。根据示例,分析题目要我们返回的「插入元素的位置」是什么。原创 2023-05-06 23:29:10 · 523 阅读 · 0 评论 -
剑指offer-29-数组中出现次数超过一半的数字-java
题目及测试package sword029;/*数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 * 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次, * 超过数组长度的一半,因此输出2。如果不存在则输出0。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,1,2},{1,2,3,2,2,2,原创 2020-12-12 11:27:25 · 128 阅读 · 0 评论 -
剑指offer-8-旋转数组的最小数字-java
题目及测试package sword008;/* * 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1; */public class main { public static void main(String[] args) { int[][] testTable = {{3,4,5,1,2},{1,2,-原创 2020-11-04 10:52:13 · 86 阅读 · 0 评论 -
剑指offer-3-二维数组中的查找-java
题目及测试package sword003;/* * 题目描述:二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。 * 完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否包含该整数 * *//* * 1 2 8 9 * 2 4 9 12 * 4 7 10 13 * 6 8 11 15 */public class main { public static void main(Str原创 2020-10-27 09:50:19 · 127 阅读 · 0 评论 -
倒排索引总结
目录倒排索引简介Elasticsearch 建立倒排索引参考了 https://www.cnblogs.com/cjsblog/p/10327673.html倒排索引简介倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。先来回忆一下我们是怎么插入一条索引记录的:curl -X PUT "localhost:9200/user/_doc/1" -H 'Content-..原创 2020-06-22 09:56:28 · 894 阅读 · 0 评论 -
leetcode-4-寻找两个有序数组的中位数-java
题目及测试package pid004;/*寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 ...原创 2020-01-10 14:58:26 · 436 阅读 · 0 评论 -
leetcode-378-有序矩阵中第K小的元素-java
题目及测试package pid378;/* Kth Smallest Element in a Sorted Matrix给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, ...原创 2020-01-09 13:43:21 · 286 阅读 · 0 评论 -
二分查找算法细节与查找左右侧边界
目录二分查找的框架寻找一个数(基本的二分搜索)寻找左侧边界的二分搜索寻找右侧边界的二分查找最后总结我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: Although the basic idea of binary search is comparatively st...转载 2019-10-10 15:38:11 · 12297 阅读 · 12 评论 -
查找算法总结-java版
目录查找定义查找算法分类平均查找长度(Average Search Length,ASL)顺序查找顺序查找的基本思想顺序查找的代码顺序查找的复杂度二分查找二分查找的基本思想二分查找的代码二分查找的复杂度插值查找插值查找的基本思想插值查找的代码插值查找的复杂度斐波那契查找斐波那契查找的基本思想斐波那契查找的代码斐波那契查找的...原创 2019-05-31 11:05:47 · 3521 阅读 · 1 评论 -
布隆过滤器(Bloom Filter)总结-java版
目录为什么要有布隆过滤器简介基本原理是否支持删除误判率哈希函数个数和布隆过滤器长度复杂度空间时间优缺点优点缺点BloomFilter和BItMap的区别应用java实现Hash工具类BitSet类BloomFilter测试为什么要有布隆过滤器在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合...原创 2019-05-07 14:59:52 · 2399 阅读 · 0 评论 -
BitMap算法总结-java版
目录简介基本思想为什么要有BitMapBitMap的映射求十进制数对应在数组a中的下标求十进制数对应数组元素a[i]在0-31中的位m使得对应第m个bit位为1使得对应第m个bit位为0java实现内部元素加入查找删除展示测试完整代码复杂度时间空间算法评价优点缺点应用BloomFilter和BItMap...原创 2019-05-06 16:45:37 · 2649 阅读 · 0 评论 -
哈希树总结-java版
目录哈希树的理论基础质数分辨定律余数分辨定理哈希树简介查找删除优点缺点哈希树的java实现节点哈希树哈希树的应用哈希树的理论基础质数分辨定律这个定理可以简单的表述为:n个不同的质数可以“分辨”的连续整数的个数和他们的乘积相等。“分辨”就是指这些连续的整数不可能有完全相同的余数序列。这个为哈希树的分辨方式奠定了理论基础。显然,这个定理...原创 2019-04-19 15:42:36 · 1309 阅读 · 0 评论 -
leetcode-240-搜索二维矩阵 II(search a 2ds matrix 2)-java
题目及测试package pid240;/* 搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, ...原创 2019-01-10 10:33:26 · 449 阅读 · 0 评论 -
leetcode-33-搜索旋转排序数组(search in rotated sorted array)-java
题目及测试package pid033;/*搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别...原创 2019-01-09 13:54:13 · 146 阅读 · 0 评论 -
leetcode-34-在排序数组中查找元素的第一个和最后一个位置(find first and last position of element in sorted array)-java
题目及测试package pid034;/*在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], targe...原创 2019-01-07 11:13:09 · 219 阅读 · 0 评论 -
leetcode-搜索总结
leetcode-278-第一个错误的版本(first bad version)-java二分查找法中,mid不能用int mid=(begin+last)/2;要用int mid=begin+(last-begin)/2;因为第一种情况begin+last可能会溢出,导致出错...原创 2018-09-29 10:57:31 · 397 阅读 · 1 评论 -
leetcode-278-第一个错误的版本(first bad version)-java
题目及测试package pid278;/*第一个错误的版本你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(v...原创 2018-09-29 10:54:25 · 338 阅读 · 0 评论