数据结构和算法
这里记录了数据结构知识点和算法学习,同时分享一些LeetCode已经各种算法比赛的解题方法,欢迎关注
hidecode
hidecode爱分享一些javaEE和大数据的技术
展开
-
假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。它们在电文中出现的频度分别为
假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。它们在电文中出现的频度分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04},1)为这7个字母设计哈夫曼编码;2)为这7个字母设计等长编码,至少需要几位二进制数?3)哈夫曼编码比等长编码使电文总长压缩多少?一对左子树路径赋为0,右子树赋为1,该数据序列相应的编码分别为a=01 b=001 c=101 d=0000 e=100 f=11 g=000原创 2021-06-24 12:08:44 · 15738 阅读 · 2 评论 -
设计模式之组合模式
一张图大概搞定内容:### 组合模式定义Componentpublic abstract class Component { protected String name; public Component(String name) { this.name = name; } abstract void add(Component c); abstract void remove(Component c); abstract void di原创 2021-06-18 17:25:19 · 96 阅读 · 0 评论 -
蓝桥杯(国赛)—— 阶乘约数,数论解法 + 大数解法(两种方法)
问题描述定义阶乘 n! = 1 × 2 × 3 × ··· × n。请问 100! (100 的阶乘)有多少个约数。答案:39001250856960000方法一:数论任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1α1 ∗ p2α2 …… ∗ pkαk约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)public class 阶层约数2 { public static void main(String[] args) { int[] arr = n原创 2021-06-04 20:24:33 · 669 阅读 · 0 评论 -
字符串出现次数的TopK问题(NlogN),思路+代码
思路:1、map存储每个字符串出现的频率2、采用大顶堆来存储map的entry对象3、弹出k个元素到二维数res组里返回描述给定一个字符串数组,再给定整数k,请返回出现次数前k名的字符串和对应的次数。返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。比如"ah1x"小于"ahb",“231”<”32“字符仅包含数字和字母[要求]如果字符串数组长度为N,原创 2021-05-27 21:14:42 · 628 阅读 · 1 评论 -
LeetCode97. 交错字符串,给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。
给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s1 + s2 + … + snt = t1 + t2 + … + tm|n - m| <= 1交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …提示:a + b 意味着字符串 a 和 b 连接。示例原创 2021-01-26 12:22:11 · 1936 阅读 · 0 评论 -
LeetCode149. 直线上最多的点数: 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o±------------>0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4解释:^|| o| o o| o| o o±----------原创 2021-01-26 11:31:21 · 1192 阅读 · 0 评论 -
数据结构——图论笔记
原创 2020-05-22 20:36:04 · 143 阅读 · 0 评论 -
2018蓝桥杯算法 java B 复数幂
标题:复数幂设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。答案写成 “实部±虚部i” 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,(2+3i)^5 的写成: 122-597i注意:需要提交的是一个很庞大的复数,不要填写任何多余内容。解题思路使用循环迭代+java大数运原创 2020-08-19 13:58:48 · 275 阅读 · 0 评论 -
哈夫曼编码实验报告C++实现
1、主要数据类型与变量1.1使用到的头文件#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map> //map数据结构存储HT编码表#include <queue> //构建的节点的优先性#include <string> //字符串方便输入输出#include <itera原创 2020-07-04 11:33:02 · 2562 阅读 · 0 评论 -
城市交通咨询模拟系统,利用该系统实现至少两种最优决策:最短路程到达、最省时到达等线路规划。
1.任务:设计一个城市交通咨询模拟系统,利用该系统实现至少两种最优决策:最短路程到达、最省时到达等线路规划。2.内容:用户驾车出行由于出行目的的不同对道路路线选择的要求也有不同。例如,有的希望在途中的路程尽可能短,有的则可能希望路程中时间最短。为了能满足广大旅客的需求,编制一个城市交通咨询模拟系统,选取城市部分位置、道路抽象为程序所需要图的顶点和边,并以城市道路长度(路程),道路的某时段的速度等信息作为图结点中的弧信息,为旅客提供这两种最优决策的交通咨询。1、主要数据类型与变量1.1 顶点,边,图的原创 2020-06-04 11:49:00 · 5239 阅读 · 6 评论 -
十大排序算法动画+代码+分析,快速排序,归并排序,堆排序,冒泡排序,选择排序
待排序的存储结构typedef int KeyType;typedef struct { KeyType key; //排序的对象、 int wd; //测试稳定性,给相同的元素增加第二个编号,0为第一次,1为第二次,以此类推}RedType;typedef struct{ RedType r[MAXSIZE+1]; int length; /*参加排序元素的实际个数*/}SqList,*List;冒泡排序:①比较相邻的元素。如果第一个原创 2020-05-31 11:48:19 · 301 阅读 · 0 评论 -
数据结构——树的笔记
原创 2020-05-22 20:35:00 · 91 阅读 · 0 评论 -
给定一组查找关键字(19,14,23,1,65,20,84,27,55,11,10,79)哈希函数为:H(key)=key % 13, 哈希表长为m=15,设每个记录的查找概率相等。
给定一组查找关键字(19,14,23,1,65,20,84,27,55,11,10,79)哈希函数为:H(key)=key % 13, 哈希表长为m=15,设每个记录的查找概率相等。请画出按照线性探测再散列处理冲突得到的哈希表(给出求解过程),并计算查找成功和查找失败时的平均查找长度各是多少。请画出按照链地址法处理冲突得到的哈希表,并计算查找成功和查找失败时的平均查找长度各是多少。关键字除以13取余后分别得到:6,1,10,1,0,7,6,1,3,11,10,1线性探测:成功时的平原创 2020-05-21 15:21:32 · 10315 阅读 · 6 评论 -
赫夫曼编码与解码C++实现
程序流程解释:①创建赫夫曼树:统计字符的频率由小到大放入优先队列,通过队列找出最小频率构建赫夫曼树。②生成赫夫曼编码和赫夫曼编码后的数据:通过递归遍历赫夫曼树,通过Map集合创建编码表,再使用编码表和源数据生成编码后的数据。③使用赫夫曼编码解码:通过查找编码后的数据配合编码表,通过查找方式输出对应的字符#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>原创 2020-05-13 23:07:40 · 844 阅读 · 1 评论 -
一元多项式计算器——C++实现
1、任务描述设有一元多项式Am(x)和Bn(X),编程实现多项式Am(x)和Bn(x)的加法、减法和乘法运算。其中多项式描述为:Am(x)=A0+A1x1+A2x2+A3x3+….+Amxm;Bn(x)=B0+B1x1+B2x2+B3x3+….+Bnxn。2、主要数据类型与变量使用到的头文件#include <iostream>#include <stdlib.h> //C++的基本函数库#include <stdio.h>#include <ct原创 2020-05-12 19:54:19 · 3134 阅读 · 0 评论 -
返回栈中最小元素&递归逆序栈
设计一个有getMin功能的栈【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】1.pop、push、getMin操作的时间复杂度都是O(1)。2.设计的栈类型可以使用现成的栈结构。【解答】在设计时,我们使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用于保存每一步的最小值,这个栈...原创 2020-03-12 14:23:04 · 194 阅读 · 0 评论