
数据结构和算法
文章平均质量分 61
光英的记忆
新世界,新创造
展开
-
python 和Java使用模数、公钥指数、私钥指数进行RSA加解密 分别实现
python版本模数 指数#!/usr/bin/pythonimport sysfrom binascii import a2b_hex, b2a_hexfrom Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5from Crypto.Util.number import bytes_to_longdef encrypt_with_modulus(content, modulus=None): e.原创 2021-01-06 11:25:17 · 915 阅读 · 1 评论 -
堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:堆排序的基本思想了解了以上内容,我们可以开始探究堆排序的基本思想了。堆排序的基本思想是:1、将带排序的序列构造成一个大顶堆,根据大顶堆的性质,当前堆的根原创 2020-08-14 11:21:32 · 174 阅读 · 1 评论 -
等差数列划分
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。如果满足以下条件,则称子数组(P, Q)为等差数组:元素 A[P], A[p + 1], ...,.原创 2020-08-13 14:20:25 · 1284 阅读 · 0 评论 -
根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]class Solution { public int[][] reconstructQueu原创 2020-08-04 15:05:59 · 184 阅读 · 0 评论 -
数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用补码运算方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:"1a"示例 2:输入:-1输出:"ffffffff"...原创 2020-08-04 10:33:08 · 1557 阅读 · 0 评论 -
左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解题思路:递归遍历所有节点 ,当当前节点的左孩子不空,左孩子没有孩子的(即没有左节点和右节点)那么加上这个值,就是左叶子节点/** * Definition for a binary tree node. * public class TreeNode { * int val...原创 2020-08-04 09:37:43 · 281 阅读 · 0 评论 -
青蛙过河
一只青蛙想要过河。 假定河流被等分为x个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示),请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。开始时,青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。如果青蛙上一步跳跃了k个单位,那么它接下来的跳跃距离只能选择为k - 1、k或k + 1个单位。另请注意,青蛙只能向前方(终点的...原创 2020-08-03 16:09:44 · 321 阅读 · 0 评论 -
移掉K位数字
给定一个以字符串表示的非负整数num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且≥ k。num 不会包含任何前导零。示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num = "10200", k = 1输出: "200"解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。..原创 2020-08-02 18:02:03 · 881 阅读 · 0 评论