算法
hhzxzy
这个作者很懒,什么都没留下…
展开
-
正则表达式的字符串匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。a* 理解为[0,+oo]个a.* 理解为[0,+oo...原创 2021-04-27 14:02:10 · 654 阅读 · 0 评论 -
max,min越界问题
//给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。//输入: 120//输出: 21//输入: -123//输出: -321int reverse(int x) { if(x >= 0 && x < 10){return x;} int result; char ch[100]...原创 2020-02-19 12:54:23 · 141 阅读 · 0 评论 -
n皇后问题 经典回溯
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["...原创 2019-10-29 11:45:45 · 254 阅读 · 0 评论 -
容器盛水问题 leetcode 19
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。双指针思路:先分别指向头尾,向两边移动。用宽度换高度才有可能面积变大,高度又由最小的一边决定,移动小边使其变大,看面积有没有变大,继续...原创 2019-10-29 11:08:10 · 1468 阅读 · 0 评论 -
整数反转------最大值最小值的处理
整数反转输入: -123输出: -321只反转数字保留符号,越界返回0,输入符合规范。// leetcode 7int reverse(int x) { int rev=0;//存放反转后的数 int pop=0;//存放弹出的数 while(x!=0) { pop=x%10;//从右往左依次取数进...原创 2019-10-29 10:04:05 · 345 阅读 · 0 评论 -
b树(即:b-树,多插平衡树)
特点:每个节点元素不止一个m阶b树:表示每个节点孩子树最多为m如以下为3阶b树(3表示孩子树的个数,而元素个数为2)因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。定义:根的孩子树必须>=2(不是两个null)非根节点元素个数: [(m/2)向下取整 -1, m...原创 2019-10-25 11:37:17 · 462 阅读 · 0 评论 -
两个栈实现队列
#include <stack>#include <iostream>#include <bitset>using namespace std;class myqueue{public: void push(int a); //尾入 void pop(); //头出 int top(); //取头pri...原创 2019-10-16 16:05:50 · 75 阅读 · 0 评论 -
红黑树
红黑树定义:1:根为黑,路径上黑色节点数相等。2:不能有两个重复红3:以null为叶子节点,且为黑色性质:根到叶子的长度len2*len(min) >= len(max) //原因:因为路径上黑色节点数相等,不能有两个重复红。//影响:树高不会太高,查找效率不会比AVL树差多少,几乎相等//因此RB又叫弱平衡二叉树对比RB与AVL查找效率几乎一样,增删时RBtree...原创 2019-10-15 20:47:46 · 429 阅读 · 0 评论 -
AVL树实现
AVL树是通过一个一个节点插入创建的;插入过程:从root向下插,将节点插入子树中,平衡当前树;、每向下一次就要考虑,有没有出现 如下两种情况情况1:插入的一侧因为插入的节点导致子树的高度发生变化情况2:因为插入节点导致当前高发生变化的情况//二叉树的插入是递归的过程insertAVL(*treeNd, e, taller){ if() //当前treeNd为空 { c...原创 2019-10-08 11:24:00 · 117 阅读 · 0 评论 -
二叉树(创建与遍历)
建二叉树时遇到的问题:#include <iostream>#include <vector>using namespace std;typedef struct treenode{ int val; struct treenode *left; struct treenode *right; treenode(int x): va...原创 2019-10-10 13:19:22 · 118 阅读 · 0 评论 -
常用排序算法
//插入排序 遍历无序序列,将无序元素插入有序序列中void insert_sort(vector<int> a){ int tmp; for(int i=1;i<a.size();i++) { tmp = a[i]; int j = i-1; //前j个是已排好序的 //遍历【0】 [j] [...原创 2019-10-07 17:50:03 · 108 阅读 · 0 评论 -
链表
vector转链表,反转链表#include <iostream>#include <vector>#include <stack>#include <queue>using namespace std;typedef struct listnode{ int val; struct listnode *next; ...原创 2019-10-10 14:54:51 · 89 阅读 · 0 评论 -
算术移位实现除法
<<, >> 与INT32_MIN,INT32_MAX用移位和加减实现除法,假设环境只能存储 32 位有符号整数// 不考虑正负 不考虑越界int my_divide(int dividend, int divisor, int& remainder) { int a = dividend; // 被除数 一般是较大的 int b = d...原创 2019-10-08 16:24:58 · 1146 阅读 · 0 评论