最近遇到的几个有意思问题,记录分享一下。 1. 合并三个有序数组(合并K个有序数组) 假如有这么三个数组:(arr包含的三个数组) 问题:K个数组,总共N个元素,合并成一个有序数组。(以升序为例) 大家一眼看上去肯定会想到归并排序,合并两个有序数组是归并排序的最后一步的动作,通过两个指针引导比较大小 ...
分类:
编程语言 时间:
2020-05-24 21:25:25
阅读次数:
66
# 堆排序的向下调整性 # 排序步骤:建堆 交换堆顶元素和最后一个元素 调整使堆重新有序 i的指向前移(i指向最后一个元素)重复2以后的步骤 # 交换步骤将堆中的最大元素移动到了堆的最后位置,排序完成后,得到的是一个升序序列 # 大根堆的排序 # 向下调整 def sift(li,low,high) ...
分类:
编程语言 时间:
2020-05-24 11:46:57
阅读次数:
66
线性DP 最长上升子序列 O(n^2)的基础算法 方程:f[i]=max(f[j]+1) j∈i+1~n ps:每个位置的初始长度都是1!!!! //最长上升序列 #include <iostream> #include <cstring> #include <cstdio> #include <c ...
分类:
其他好文 时间:
2020-05-24 00:43:07
阅读次数:
40
冒泡排序 前置知识 确定数组需要传入两个参数: 数组的首地址和数组元素的个数 冒泡规则,假设一个 int a[5] 的数组,升序规则如下 ? 第一次排序 : 1. a[0]与a[1]比较,大的值放在a[1],小的值放在a[0]; 2. a[1]与a[2]比较,大的值放在a[2],小的值放在a[1]; ...
分类:
编程语言 时间:
2020-05-23 12:56:43
阅读次数:
52
题目: 给一个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]示例 2: 输入:arr = [1,3,6,10,15]输出:[[1,3]]示例 3: 输 ...
分类:
Web程序 时间:
2020-05-22 21:15:05
阅读次数:
72
这个技巧我要记住,免得忘了。 回滚莫队用于解决插入难,删除易或者删除难,插入易的问题。 需要一个数据结构支持插入,撤销,就是希望里的“可回退化数据结构”。 对于删除难,插入易的问题,在排序的时候,第一个关键字是左端点所在块升序,第二个关键字是右端点升序。 每次延展右端点(这是单调的),记录答案放在变 ...
分类:
其他好文 时间:
2020-05-22 16:54:05
阅读次数:
54
题意 :有一个长度为$n$的序列$a$,求这个序列中有多少比$a_{i}$小的数,如果某两个位置上的数有矛盾,则不能算小. 题解 :用$pair$来记录序列中元素的位置和大小,将他们升序排序,对于每对矛盾的位置,只记录$a[u] a[v]$的情况,小于等于的情况没必要考虑,然后我们遍历排序后的序列, ...
分类:
编程语言 时间:
2020-05-22 09:57:48
阅读次数:
52
地址:https://leetcode-cn.com/problems/minimum-height-tree-lcci/ <?php /** 面试题 04.02. 最小高度树 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [- ...
分类:
其他好文 时间:
2020-05-21 16:03:18
阅读次数:
55
Arrays提供了许多为数组编写的静态方法: 1、toString(数组):将参数数组变成字符串(按照默认格式:【元素1,元素2···】) 2、sort (数组):按照默认顺序(升序,从小到大)对数组进行排列 ...
分类:
编程语言 时间:
2020-05-19 17:54:04
阅读次数:
49
我们在实际工作中,常常把RANK函数用于对一列数据的基本排序,即从大到小的排序方法,那你还知道它的其他什么用法吗? 今天就给大家系统的分享下RANK函数的用法,分享的内容主要为以下这6种技巧。 1、升序排列 2、降序排列 3、多列数据排名 4、多条件排名 5、不出现相同排名(以出现顺序进行优先排列) ...
分类:
编程语言 时间:
2020-05-19 12:55:33
阅读次数:
114