算法
文章平均质量分 84
RSABLOCKCHAIN
Anything is possible.
展开
-
零知识证明技术概述
零知识证明又被称为零知识协议,利用数学知识在双方不需要直接传递信息本身的前提下来验证信息的正确性。这个思想首先被发表在1985年出版的MIT的论文里。原创 2023-08-06 17:32:13 · 791 阅读 · 1 评论 -
【ECDH java后端和javaScript前后端互通实现】
Elliptic-curve Diffie-Hellman(ECDH)是一种通过两方达成密钥协商的密钥生成算法,每一方都有一个椭圆双曲线的公私钥对,双方在不安全的通信通道间传递信息达成密钥生成协议。在初始时刻,Alice和Bob共享了些域的参数(p a,b,G,n,h),Alice在整数范围[t,n-1]中随机选择一个私钥d,并通过计算(Q=d·G)web前端和后端之间的通信不一定可靠,如果不方便使用预共享密钥的方式完成身份的确认,那么可以使用ECDH密钥协商算法在前端和后端进行密钥间的协商。原创 2022-12-12 00:33:59 · 1314 阅读 · 0 评论 -
单调栈的性质和使用场景
单调栈即需要保证入栈的元素是保持递增或者递减的。如果有违反递增或者递减的原则,那么就需要通过弹出栈的方式来保持单调栈的性质。单调栈常被用来解决滑动窗口中元素最大值和最小值的问题。.........原创 2022-08-26 23:47:55 · 332 阅读 · 0 评论 -
动态规划通用解法
动态规划模板实践-01背包原创 2022-05-01 15:32:06 · 406 阅读 · 0 评论 -
优先级队列的实现
前情概述本文主要用于理解优先级队列的实现细节。另外,记录自己的思考。优先级队列的概念首先优先级队列的概念脱胎于队列,队列有先进先出的概念,优先级队列则根据优先级的次序从队列中弹出元素。优先队列的实现优先队列的底层实现是堆,因为堆的插入时间复杂度为O(logN),所以优先级队列的入队操作的时间复杂度也是O(logN)。堆可以由动态数组实现的。优先级队列中比较重要的两个操作是插入和删除。...原创 2019-09-06 16:53:17 · 1817 阅读 · 0 评论 -
leetcode201拓扑排序 (C++ 实现)
题目描述There are a total of n courses you have to take, labeled from 0 to n-1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a...原创 2019-04-24 15:47:21 · 384 阅读 · 0 评论 -
腾讯提前批后台开发最后一题
题目简述有L栋楼房排列在一条很直的道路上,每栋楼房颜色都与其它楼房颜色不一样,高度也不一定相同,现在有一个人在这条很直的道路的某一端,离楼房很远处远眺楼房,假设这个人共看到m种颜色,问有多少种排列方式?输入其中第一行第一数代表房屋的总数,第一行第二个数则代表某人能看到的房屋的颜色。第二行则分别是这3座楼房的高度。3 22 1 3输出输出的值为这三栋楼在约束条件下总共有多少种排列。...原创 2019-03-10 13:42:49 · 160 阅读 · 0 评论 -
leetcode 52 N-Queens
题目描述The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.E...原创 2018-12-14 19:42:18 · 165 阅读 · 0 评论 -
算法 leetcode 31 Next Permutation
题目描述Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possi...原创 2018-12-03 23:00:38 · 157 阅读 · 0 评论 -
算法:非完美二叉树的高度与直径
非完美二叉树的高度与直径原创 2018-04-17 15:33:20 · 360 阅读 · 0 评论 -
算法:动态中位数问题
题目描述输入一组整数a1, a2, …, an ,每输入一个整数,输出到此时为止的中位数。中位数定义:如果数串的大小是偶数 2j,中位数是从小到大排列的第 j 个数;如果数串的大小是奇数 2j+1,中位数是从小到大排列的第 j+1 个数。输入一组整数,数字和数字之间以空格隔开。输出一组整数,数字和数字之间以空格隔开。最后一个数后面也有空格。第 i 个输出的整数,是前...原创 2018-04-17 15:15:34 · 2597 阅读 · 1 评论 -
如何证明算法的正确性?
结合算法导论相关章节的学习,利用号循环不变式可以帮助我们理解算法的正确性。循环不等式主要满足以下的三条性质: 初始化:循环的第一次迭代之前,它为真。 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真 终止:在循环终止之前,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。插入排序算法正确性INSERTION-SORT(A)for j = 2 to A...转载 2018-04-02 17:04:39 · 17039 阅读 · 2 评论 -
算法:所有的逆序对
题目描述给出一个字符串数组,如果(按照字典序)一个大的字符串在比它小的字符串前面我们称这两个字符串组成一个“逆序对”。你需要找到所有的逆序对的个数。输入第一行是数组大小,第二行是以空格分隔的字符串数组. 注:预先知道每个字符串的长度都是 10.输出所有的逆序对个数. 注意:结果比较大,请用 long 类型保存.样例输入 3 aaaaaaaaa...原创 2018-04-01 23:45:43 · 952 阅读 · 0 评论