二分法:输入必须是一个有序的元素列表 最多需要log2^n步(对数):将2^n=x(假如列表包含8个元素,2^n=8 n=3,最多需要3步可以找到该元素) 练习: 1.假设有一个包含128个名字的有序列表,你要使用二分查找在其中查找一个名字,请 问最多需要几步才能找到?(7步 2^7=128) 2. ...
分类:
其他好文 时间:
2020-03-05 13:42:49
阅读次数:
129
"I Count Two Three" 可以预处理出所有的满足题目并且比1e9小的的数,不会很多。排个序。询问的时候二分查找就好了 ...
分类:
其他好文 时间:
2020-03-04 23:33:43
阅读次数:
99
剑指offer 37.数字在排序数组中出现的次数 题目 统计一个数字在排序数组中出现的次数。 思路 虽然递归已经是O(n)了,但是还要缩小,所以二分查找,找到前后的位置就行了。查找设k 0.5和k+0.5,反正都没有,所以能找到应该在的位置,然后减法就行。 代码 ...
分类:
编程语言 时间:
2020-03-04 20:46:25
阅读次数:
67
#include<iostream>usingnamespacestd;intmain(){intarr[]={5,6,7,8,9,1,2,3,4};intleft=0,right=8;cout<<"循环有序数组arr[]={";for(inti=0;i<9;i++)if(i!=8)cout<<arr[i]<<",";elsecout<&
分类:
编程语言 时间:
2020-03-02 22:25:09
阅读次数:
66
题目地址 给定一个只含有abc的字符串,要求包含abc分别各一个的子串个数。 预处理每种字符前缀和,枚举子串左端点,二分查找满足条件的右端点,三个字符取最大的,直接计数。 双指针。 code1 code2 ...
分类:
其他好文 时间:
2020-03-02 11:12:20
阅读次数:
48
1.查找问题: 二分查找: 例题:使用map解决查找问题 代码: #include <bits/stdc++.h> using namespace std; //查找学生信息 struct Student{ string name; string sex; int age; string id; } ...
分类:
其他好文 时间:
2020-03-01 14:07:43
阅读次数:
59
第二章 查找和排序算法课时1:列表查找1、列表查找的含义:从对象中查找某一个特定的元素2、列表查找的方式包含两种:顺序查找和二分查找3、顺序查找算法:从开始一直搜索到最后一个元素进行查找,for循环,时间复杂度为O(n);4、二分查找针对有效的列表直接进行首尾二分查找,不断使得候选区减半,所以其时间 ...
分类:
编程语言 时间:
2020-02-29 20:17:10
阅读次数:
74
给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn)级别。如果数组中不存在目标值,返回[-1,-1]。示例1:输入:nums=[5,7,7,8,8,10],target=8输出:[3,4]代码实现classSolution{public:intleft_index(vector<int>&a
分类:
编程语言 时间:
2020-02-26 14:21:11
阅读次数:
74
二分查找和斐波那契查找 1 #include<iostream> 2 using namespace std; 3 class Fib{ 4 public:int f,g; 5 Fib(int n) 6 { 7 f=1,g=0; 8 while(g<n) 9 next();}//因构造函数返回函数 ...
分类:
其他好文 时间:
2020-02-25 14:37:59
阅读次数:
77
/* 先定数组长度,无法获取一个Int数组的真实长度 如 int a[20]={1,2} 实际长度是多少呢? sizeof(a)/sizeof(a[0])是算不出来的!只能自己写函数了! 注意,二分查找是查找一个有序的序列,这里的演示的有序,有两种 1、bindSearch函数自身提供的数组(索引器 ...
分类:
其他好文 时间:
2020-02-25 09:48:26
阅读次数:
45