数据结构与算法
小麦大大
写写代码纪录生活
展开
-
判断回文
#include <iostream>#include <string>using namespace std;class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param str string字符串 待判断的字符串 * @return bool布尔型 */ bool judge(string &str) { // write code here .原创 2021-03-25 11:17:27 · 150 阅读 · 0 评论 -
两数之和
#include <iostream>#include <vector>#include <map>using namespace std;class Solution{public: vector<int> twoSum(vector<int>& numbers, int target) { // write code here int n = numbers.size(); map<int, int.原创 2021-03-25 11:06:29 · 94 阅读 · 0 评论 -
滑动窗口
class Solution{public: int findMax(const vector<int>& num, int index, int size) { int max = num[index]; for (int i = index - 1;i >= index - size + 1;i--) { if (num[i] > max) { max = num[i]; } } return max; } v.原创 2021-03-18 15:11:31 · 97 阅读 · 0 评论 -
简单算法(字符串左旋转和右旋转)
#include <iostream>#include <string>using namespace std;class Solution {public: // 翻转函数 void reverse(string &str, int begin, int end) { while (begin < end) { char temp = str[begin]; str[begin] = str[end]; str[end] =.原创 2021-03-18 15:05:41 · 151 阅读 · 0 评论 -
C语言简单小算法(第一篇)
十道简单算法题1、1-n阶乘之和2、获取二维数组每列最小的值3、求"1!+4!(2的平方)+9!(3的平方)+…+n的值4、数组对角线元素之和5、打印杨辉三角形6、猴子吃桃子问题7、计算单词的个数8、判断字母是否完全一样9、判断一个数是不是2的某次方10、判断一个数字是不是ugly number一、1-n阶乘之和1-n阶乘之和怎么算?1的阶乘是12的阶乘是123...原创 2019-01-18 19:15:48 · 1417 阅读 · 1 评论 -
KMP算法
代码:void prefix_table(char pattern[],int prefix[],int n){ prefix[0] = 0;//一个元素所以prefix[0] = 0 int len = 0; int i = 1;//第一个不用比较 while(i<n) { if(pattern[i]==pattern[len])//如果相等,公共前后缀+1 { ...原创 2019-01-19 16:07:35 · 131 阅读 · 0 评论 -
C语言简单算法(二)
1、 删除下标为k的元素2、找出常用的数字3、丢失的数字4、将0放在数组最后5、找出数组的单个数字6、画三角形星星7、啤酒与饮料8、求最大公约数一、删除下标为k的元素删除下标为k的元素void deleteK(int arr[],int n,int k){ for(int i = k;i<n-1;i++) { arr[i] = arr[i+1]; }}...原创 2019-01-19 19:51:57 · 961 阅读 · 0 评论 -
二叉树前序中序后序非递归写法
#include <iostream>#include <stack>using namespace std;struct TreeNode{ char val; TreeNode *left; TreeNode *right; TreeNode(char x):val(x),left(NULL),right(N...翻译 2019-01-25 00:41:19 · 105 阅读 · 0 评论 -
FisherYates洗牌算法
洗牌算法Fisher–Yates随机置乱算法也被称做高纳德置乱算法,通俗说就是生成一个有限集合的随机排列。Fisher-Yates随机置乱算法是无偏的,所以每个排列都是等可能的,当前使用的Fisher-Yates随机置乱算法是相当有效的,需要的时间正比于要随机置乱的数,不需要额为的存储空间开销。例子:1、各列含义:范围、当前数组随机交换的位置、剩余没有被选择的数、已经随机排列的数第一轮:...翻译 2019-04-02 17:40:39 · 620 阅读 · 0 评论 -
二叉查找树
1. 二叉查找树的定义二叉查找树(binary search tree)是一棵二叉树,或称为二叉搜索树,可能为空;一棵非空的二叉查找树满足一下特征:1、每个元素有一个关键字,并且任意两个元素的关键字都不同;因此,所有的关键字都是唯一的。2、在根节点的左子树中,元素的关键字(如果存在)都是小于根节点的关键字。3、根节点的右子树中,元素的关键字(如果存在)都是大于根节点的关键字。4、根节点...翻译 2018-12-19 17:08:47 · 141 阅读 · 0 评论 -
集合的子集
利用二进制一个集合的子集的个数就等于其所有组合之和,即任选1个元素的集合个数+任选2个元素的集合个数+任选3个元素的集合个数+…+任选N个元素的集合个数,最后结果呢是2的N次方个。既然是2的N次方,我们就可以用二进制位表示,如果某位为1,则表示这个集合中含有这一位所代表的元素。例如一个集合是{1,2,3,4,5},则二进制10011就表示这个集合为{1,4,5}#include <ios...原创 2018-10-23 12:33:56 · 1830 阅读 · 0 评论 -
判断字符串S是否对称
/*设计一个算法,判断字符串S是否对称*/#include<iostream>#include<string>using namespace std;//判断对称void judge_symmetry(string S){ int length_S=S.length()-1; int count=0; while(length_S!=c...原创 2018-10-23 11:42:11 · 1474 阅读 · 0 评论 -
线性表
头文件:SeqList.h#ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);//创建链表节点void SeqList_Destroy(SeqList* list);//...原创 2018-08-23 07:55:31 · 133 阅读 · 0 评论 -
栈
前一篇文章介绍了线性表:那这一篇就不在具体介绍了。Stack基本概念栈是一种 特殊的线性表 栈仅能在线性表的一端进行操作栈顶(Top):允许操作的一端栈底(Bottom):不允许操作的一端栈的规则:后进先出或者(先进后出)seqlist.h #ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__ ...原创 2018-08-23 08:14:01 · 123 阅读 · 0 评论 -
队列
queue基本概念队列是一种特殊的线性表 队列仅在线性表的两端进行操作队头(Front):取出数据元素的一端队尾(Rear):插入数据元素的一端队列不允许在中间部位进行操作!队列规则:FIFO(先进先出)由前篇已经介绍线性表,这边就直接拿上次的代码来模拟:seqlist.h#ifndef __MY_SEQLIST_H__ #define __MY_SEQLIS...原创 2018-08-23 15:19:19 · 118 阅读 · 0 评论 -
树
#include <stdio.h>#include <stdlib.h> struct node { int data; struct node*lchild;//左链域 struct node*rchild;//右链域 }; typedef node BiTNode; typ...原创 2018-08-24 07:23:51 · 102 阅读 · 0 评论 -
单向链表
Mylist.h#ifndef __MyList__ #define __MyList__ typedef void LinkList_t; typedef struct _tag_ListNode { struct _tag_ListNode*next; }ListNode; LinkList_t*Create_List(...原创 2018-09-09 09:37:31 · 133 阅读 · 0 评论 -
哈希表
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树...原创 2018-09-10 18:54:39 · 169 阅读 · 0 评论 -
数据结构——链表(c++)
myList.htemplate &lt;class T&gt; class List { void clear(); // 置空线性表 bool isEmpty(); // 线性表为空时,返回True bool append(T value); /...翻译 2018-10-23 11:26:17 · 345 阅读 · 0 评论 -
双向链表
双向链表 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct node { int data; struct node *pre; struct node *next; }Node; //创建双向链表 N...原创 2018-08-27 07:35:08 · 189 阅读 · 0 评论