单调栈,单调队列,优先队列 单调数据结构 常用于处理权值与序号单调的问题。 1.最近较小数 给定一个长度为n(n const int maxn = 5e6 + 10; int a[maxn], stack[maxn]; int n, top; int main() { //读入数据 scanf("% ...
分类:
其他好文 时间:
2020-01-27 12:32:37
阅读次数:
74
链接:https://leetcode-cn.com/problems/is-subsequence 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100 ...
分类:
其他好文 时间:
2020-01-26 12:59:01
阅读次数:
56
题解 第一种方法:令数组tree[]记录栈中的元素,栈中的数值 x 的个数为 tree[x] 。树状数组维护tree[],然后二分查找。 第二种方法:利用分块,以一定长度区间为单位,记录栈中数值的个数,然后暴力查找。 代码 //树状数组 + 二分 #include<bits/stdc++.h> us ...
分类:
其他好文 时间:
2020-01-25 22:07:44
阅读次数:
82
我不复制题目了,太丑。转跳戳这里:--\(˙<>˙)/-- 这道题最简单的做法就是一个个比较,从第一个比到最后一个,但是很显然这样子太暴力了,leetcode哪里会出这种题目给我们。注意题目的字眼 “假设按照升序排序的数组在预先未知的某个点上进行了旋转”,这很明显就是想让我们用二分查找写这道题目,可 ...
分类:
编程语言 时间:
2020-01-25 00:57:30
阅读次数:
100
观点1 我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。 比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果 我们选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。 ...
分类:
编程语言 时间:
2020-01-24 21:16:44
阅读次数:
86
二分查找常用与一个 有序 序列或一个具有 单调性 问题中。 8.1 编程思路: 1. 设有一数组 $a[n]$ ,数组中的元素按值从小到大排列有序。用变量 $low, high$ 和 $mid$ 分别指示待查元素所在区间的下界、上界和中间位置。初始时,$low=0,high=n 1$ ,查找 $x$ ...
分类:
其他好文 时间:
2020-01-24 14:32:14
阅读次数:
74
/* 算法: 数组的复制,反转,查找(线性查找,二分查找) */ import java.util.Scanner; public class arrayCopyReverseSearch { public static void main(String[] args) { String[] arr ...
分类:
编程语言 时间:
2020-01-24 00:18:42
阅读次数:
109
剑指OFFER 旋转数组的最小数字 暴力解法 直接一次扫描找出最小元素,时间效率比较低,需要改进 发现提交测试的时间还是一样的,可能是测评系统的问题吧,使用了二分查找多少都会快一些吧 ...
分类:
编程语言 时间:
2020-01-23 09:22:03
阅读次数:
58
1 //冒泡排序 2 void bubbleSorte(int* arr, int len) 3 { 4 for (int i = 0; i < len - 1; i++) 5 { 6 for (int j = 0; j < len - 1 - i; j++) 7 { 8 if (arr[j] > ...
分类:
编程语言 时间:
2020-01-22 14:44:45
阅读次数:
94
参考chaibubble的博客:https://blog.csdn.net/chaipp0607/article/details/76977687 思路分析: 排序数组:已经排好序的数组。(一开始不懂是什么意思..) 1. 可以遍历整个数组计算k值有多少个,这最容易想到,时间复杂度O(n)。 2. ...
分类:
编程语言 时间:
2020-01-21 21:32:51
阅读次数:
59