数据结构
hzf-2017
程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
获取单链表的倒数第k个节点的三种办法
问题描述:输入一个链表,输出该链表中倒数第k个结点。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }方案一:暴力方法:class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if (!pListHead原创 2020-08-06 23:26:29 · 1131 阅读 · 0 评论 -
C++使用stl相关库文件时显示未声明
问题描述:C++导入并且使用hash_map,hash_set时报错提示未声明原因:相关命名空间在__gnu_cxx解决办法,添加using namespace __gnu_cxx;原创 2020-08-01 22:21:33 · 334 阅读 · 0 评论 -
vsCode报错cygwin.s
报错原因:栈溢出解决方法,将数组改为指针,即:int a[1000] --> int* a = new int[1000];原创 2020-07-08 16:09:04 · 1525 阅读 · 0 评论 -
LCS-动态规划算法详解
LCS 思想讲解:#include<iostream>#include<string.h>using namespace std;/** * @param {type} string X I am argument string X. * @param {type} string Y I am argument string Y. * @param {type} int **B 存储方向变量-B[i][j]表示C[i][j]的值是由哪个子问题得到的. * *原创 2020-06-22 23:36:34 · 790 阅读 · 0 评论 -
POJ1003-C++
POJ1003问题描述:How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We’re assuming that the cards must be perpendicular to the table.) With two cards you can make the top car原创 2020-05-19 21:19:22 · 283 阅读 · 0 评论 -
POJ1002-C++
POJ1002问题描述:Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialing the memorable TUT-GLOP. Sometime原创 2020-05-19 21:16:48 · 317 阅读 · 0 评论 -
求无重复字符串的最大子串(滑动窗口,哈希优化,桶优化)力扣第三题
class Solution {public: int lengthOfLongestSubstring(string s) { /*滑动窗口方法*/ /* 原理: 指针start,end分别指向子串的首尾,end不断向末尾扩展 tmChar记录当前子串end新移动到的位置的值 若在star...原创 2020-03-23 23:56:31 · 342 阅读 · 0 评论 -
leetcode求两数之和
class Solution{ public: vector<int> twoSum(vector<int>& nums, int target){ unordered_map<int, int> m;//定义一个哈希表 for(int i=0; i<nums.size(); i++){ ...原创 2020-03-23 20:55:22 · 216 阅读 · 0 评论 -
Hash函数
什么是 HashHash(哈希),又称“散列”。散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。在某种程度上,散列是与排序相反的一种操作,排序是将集合中的元素按照某种方式比如...转载 2020-03-14 22:24:58 · 365 阅读 · 0 评论 -
RSA对称加密C++实现
学习物联网安全,让自己实现以下非对称加密算法RSP算法根据原理进行Coding的时候发现由于太长时间不进行Coding,所以很是手生于是万能的百度起来,但是发现网络上面的代码过于复杂,不太适合强行Coding,尤其是对于我这种懒得逐句理解的人来说因为根据原理简单的Coding了一下,能够简单的实现RSP加解密当然中间有一点内存空间不对称导致的乱码问题,,,,这都是小问题,能看就行...原创 2020-03-14 00:12:37 · 686 阅读 · 1 评论 -
C++二叉树总结(包含源码)一
#include<iostream>#include<string>#include<list>#include<cmath>#include<hash_map>using namespace std;class Node{ public: Node(int data){ t...原创 2020-03-08 22:20:18 · 198 阅读 · 0 评论 -
将单链表中的元素重新排列,小的在左边,相等的在中间,大的在右边(优化算法-C++)
/** @Author: hzf* @Date: 2020-03-01 22:24:23* @Last Modified by: hzf* @Last Modified time: 2020-03-01 22:59:53*//* 一般方法: 在数组中进行快排,然后放入单链表中*//*优化算法 通过六个变量实现单链表中小于num的数字在左边,等于在中间,大...原创 2020-03-01 23:02:42 · 382 阅读 · 0 评论 -
打印两个链表的公共部分-C++实现
/*打印两个链表的公共部分 方法: 指针分别指向两个链表的首部,谁小谁移动到下一个,如果相同那么打印并且两个指针都移动*/#include <iostream>using namespace std;struct Node{ int value; struct Node* next;};typedef struct Node* Linklist;Link...原创 2020-03-01 22:02:42 · 617 阅读 · 0 评论 -
桶排序详解以及优化C++代码
/** @Author: hzf* @Date: 2020-02-29 20:47:49* @Last Modified by: hzf* @Last Modified time: 2020-02-29 21:36:01*//* 桶排序 原理: 准备有限个桶,将一系列数字分批次,按照要求放入桶内,再按照顺序取出 根据数组中的最大数的位数确定取放几次,根据个位、十位、百...原创 2020-02-29 21:36:42 · 820 阅读 · 0 评论 -
堆排序原理及详解
/** @Author: hzf* @Date: 2020-02-29 18:04:43* @Last Modified by: hzf* @Last Modified time: 2020-02-29 18:48:56*//*原理:什么是堆?——完全二叉树什么是大头堆?——父节点是最大值二叉树的特点: index下标的左孩子下标:2*index + 1 i...原创 2020-02-29 18:49:48 · 831 阅读 · 0 评论 -
快速排序详解
/** @Author: hzf* @Date: 2020-02-28 20:52:55* @Last Modified by: hzf* @Last Modified time: 2020-02-28 21:46:53*//*原理:问题一:将一系列数字进行处理,使得大于num的数字在数组左边,小于num的数字位于数组右边解决方法:将数组划分为左边,右边两部分,...原创 2020-02-28 21:49:40 · 168 阅读 · 0 评论 -
从长度为n的序列中找出平均值最大的长度不小于L的连续序列
/** @Author: hzf* @Date: 2020-02-24 11:22:45* @Last Modified by: hzf* @Last Modified time: 2020-02-24 11:35:02*/#include <stdio.h>int GetAverage_MaxLength(int *a, int n, int l)//*a表...原创 2020-02-24 11:37:51 · 1521 阅读 · 0 评论 -
求一个数组的最小和问题
#include<iostream>using namespace std;void Swap(int *arr, int i, int j){ arr[i] ^= arr[j]; arr[j] ^= arr[j]; arr[i] ^= arr[j];}int GetLength(int *arr){ return (sizeof(arr) / sizeof(...原创 2020-02-05 17:08:33 · 1014 阅读 · 1 评论 -
归并排序-C++实现
#include<iostream>using namespace std;void Swao(int *arr, int i, int j){ arr[i] ^= arr[j]; arr[j] ^= arr[j]; arr[i] ^= arr[j];}int GetLength(int *arr){ return (sizeof(arr) / sizeof(...原创 2020-02-05 16:40:57 · 150 阅读 · 0 评论 -
找出数组中奇数次出现的元素(唯二出现)-C++实现,有详细讲解
#include<iostream>using namespace std;int GetLength(int *arr){ return (sizeof(arr) / sizeof(arr[0]));}void Swap(int *arr, int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ a...原创 2020-02-05 15:00:05 · 671 阅读 · 0 评论 -
找出数组中奇数次出现的元素(唯一出现)--C++实现
#include<iostream>using namespace std;int GetLength(int *arr){ return (sizeof(arr) / sizeof(arr[0]));}void Swap(int *arr, int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ a...原创 2020-02-05 14:58:42 · 694 阅读 · 0 评论 -
选择排序-C++实现
#include<iostream>using namespace std;int GetLength(int *arr){ return (sizeof(arr) / sizeof(arr[0]));}void Swap(int *arr, int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ a...原创 2020-02-05 14:57:11 · 101 阅读 · 0 评论 -
冒泡排序-C++实现
#include<iostream>using namespace std;int GetLength(int *arr){ return (sizeof(arr) / sizeof(arr[0]));}void Swap(int *arr, int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ ...原创 2020-02-05 14:55:38 · 189 阅读 · 0 评论 -
二叉链表存储二叉树
fthjane 二叉链表存储二叉树 链式存储结构 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。其结点结构为:&...转载 2019-01-14 01:23:56 · 4587 阅读 · 0 评论 -
直接插入排序
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。 实例: 0.初始状态 3,1,5,7,2,4,9,6(共8个数) 有序表:3;无序表:1,5,7,2,...转载 2019-01-14 01:25:05 · 130 阅读 · 0 评论 -
哈夫曼树
哈夫曼树 一、定义哈夫曼树,又称最优树,是一类带权路径长度最短的树。首先有几个概念需要清楚:1、路径和路径长度从树中一个结点到另一个结点之间的分支构成两个结点的路径,路径上的分支数目叫做路径长度。树的路径长度是从树根到每一个结点的路径长度之和。2、带权路径长度结点的带权路径长度为从该结点到树根之间的路径长度与结点上权的乘积。树的带权路径长度为树中所有...转载 2019-01-14 01:28:14 · 281 阅读 · 0 评论 -
二叉排序树
算法与数据结构(十) 二叉排序树的查找、插入与删除(Swift版) 在上一篇博客中,我们主要介绍了四种查找的方法,包括顺序查找、折半查找、插入查找以及Fibonacci查找。上面这几种查找方式都是基于线性表的查找方式,今天博客中我们来介绍一下基于二叉树结构的查找,也就是我们今天要聊的二叉排序树。今天主要聊的是二叉排序树的查找、插入与删除的内容,二叉排序的创建过...转载 2019-01-14 01:38:22 · 331 阅读 · 0 评论
分享