算法
远腾飞
平凡的脚步也可以走完伟大的行程。
这个世界上任何奇迹的产生都是经过千辛万苦的努力而得的,首先承认自己的平凡,然后用千百倍的努力来弥补平凡。不要在应该奋斗的年华里,选择安逸。
展开
-
力扣技巧-回溯
回溯原创 2022-09-06 18:34:12 · 92 阅读 · 0 评论 -
算法技巧-DFS、BFS
bfs原创 2022-09-01 22:32:13 · 73 阅读 · 0 评论 -
算法技巧-队列
队列原创 2022-09-01 00:46:32 · 186 阅读 · 0 评论 -
算法技巧-栈
栈原创 2022-08-31 00:19:40 · 174 阅读 · 0 评论 -
位运算技巧
1.左移m << 1 = m * 2^12.Brian Kernighan 算法清除二进制串中最右边的 1// 抹去最右边的 1n = n & (n - 1);原创 2021-04-01 00:28:08 · 78 阅读 · 0 评论 -
左倾红黑树(Left-Leaning Red-Black Trees:LLRBT)解析
左倾红黑树(LLRBT)1.用普通的平衡二叉树(BST)表示2-3-4树2.用内部的红边表示3-节点和4-节点(红边指入的节点为红节点)所以我们可以用红黑树来表示2-3-4树。如下:注意:对应关系不是唯一的(3个节点可以任意倾斜),对于一棵2-3-4树可能有多种不同的红黑树表示,这是因为对于3-node的表示,红色的边可以向左倾,也可以向右倾。所以要考虑很多情况。但是我们只考虑左...原创 2019-11-20 12:33:29 · 1961 阅读 · 5 评论 -
八大排序算法(java实现)
一.冒泡排序(BubbleSort)基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。过程:比较相邻的两个数据,如果第二个数小,就交换位置。从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。在冒泡排序中第二个for循环,一定要控制两两交换数据的范围。减去已经排好序的范围。平均时间复杂度:O(n^2)java代码实现:pub...原创 2019-08-21 11:30:36 · 219 阅读 · 0 评论 -
普通数组转化稀疏数组
package sparsearray;/** * create by * * @Author luozhiyuan * @qq [email protected] * @on 2019-08-04. * @time 23:44 */public class sparseArray { // 二维数组输出方法 public static void pri...原创 2019-08-06 16:08:48 · 205 阅读 · 0 评论 -
C++的STL进一步总结之lower_bound和upper_bound
一、lower_bound用法:int t=lower_bound(a+l,a+r,m)-a解释:在升序排列的a数组内二分查找[l,r)区间内的值为m的元素。返回m在数组中的下标。特殊情况:1.如果m在区间中没有出现过,那么返回第一个比m大的数的下标。2.如果m比所有区间内的数都大,那么返回r。这个时候会越界,小心。3.如果区间内有多个相同的m,返回第一个m的下标。时间复杂度:一次查询O(log ...原创 2018-06-15 18:18:28 · 279 阅读 · 0 评论 -
快速求素数个数
问题:求1~n出现了多少个素数。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define ll long longusing namespace std;const in...原创 2018-04-04 22:29:41 · 914 阅读 · 0 评论 -
LIS 和LCS模版
//最长上升子序列 int dp[MAX_N],a[MAX_N],n,ans=0;for(int i = 1;i <= n;i++){ dp[i]=1; for(int j = 1;j < i;j++){ if(a[j]<a[i]){ dp[i]=max(dp[i],dp[j]+1); } } ans=max(ans,dp[i]);}//最长公共子序列char s1[MA...原创 2018-03-29 23:13:35 · 153 阅读 · 0 评论 -
快速排序理解
答案:原创 2018-03-19 16:38:20 · 170 阅读 · 1 评论 -
第八届蓝桥杯 分巧克力
儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们...原创 2018-03-15 17:09:00 · 165 阅读 · 0 评论