HELLO WORLD--一起加油|

kingwzun

园龄:3年6个月粉丝:111关注:0

随笔分类 -  基本算法

尺取(双指针)算法
摘要:概述 复杂度:O(n) **作用:**优化双层循环 使用场景: 两个指针具有单向性(只加不减 或 只减不加) 思想: 利用两个指针去遍历数组。 因为两个指针是不减的,因此两个指针最多分别遍历n次。因此复杂度最多是2n。 代码形式: for (int i = 0, j = 0; i < n; i ++
47
0
0
前缀和 and 差分
摘要:前缀和 一维前缀和: 预处理: O(n) S[i]=a[1]+a[2]+...a[i] 求区间[L,R]的和:O(1) a[L]+...+a[R]=S[r]S[l1] 二维前缀和:. 预处理: O(nm) S[i, j] = 第i行j列格子左
191
0
0
二分算法
摘要:# 整数二分 二分的本质**不是单调性。** *(有单调性一定可以二分,但是二分可以做的题,不一定需要满足单调性。)* 二分的本质**是二段性** 就是有一个分界点O,分界点左边都是状态x,分界点右边都是状态y。 ![image](https://img2022.cnblogs.com/blog/2
87
0
0
图的遍历(DFS、BFS)
摘要:深度优先遍历(DFS) 思想: 一条路走到底:走到访问过的结点,退回上一结点;从上一结点开始,继续遍历未访问的结点,重复此项工作。(遍历次序可能不同) 案例:根的先根遍历 代码(邻接矩阵)(连通图) **代码思想:**每次取出一个元素,放入与该元素相连的并且没有放入栈中的其他结点;直到无路可走,只取
208
0
0
约瑟夫环问题多种解法
摘要:整理自原文 经典问题: 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 使用循环链表 步骤: 1、先创建一个环形链表来存放
271
0
0
7-9 数列循环右移
摘要:题目链接 题意 将数组a中的每个元素循环向右移m个位置 思路(未实现): 定义i,j两指针, i指向移动前坐标,j指向移动后坐标 定义变量t记录当前a[j]的数值(下一次a[i]的数值) 每次i=j; 多次循环 方法 方法1:翻转法 步骤: 依次反转[0, n - 1]、[0, m - 1]、[m,
236
0
0
三分算法
摘要:算法用途: 求解凸性函数的极值问题*(例:二次函数)* 。 复杂度:O(2log3n) 具体实现: 理解: 题目: 求(上)凸函数f在区间[L,R]的极大值 过程: 首先找到m1 和m2(两个三等分点) 把f(m1)和f(m2)进行比较。 如果f(m1)>f(m2), 则 R=m2; 否则 L=m1
123
0
0
桶排序和快排函数
摘要:@(排序) 桶排序bucket sort 概述(哈希的感觉) 要求:数字是有一定范围的 基本思想:分配+收集 具体: (分配) : 设置若干个箱子,将关键字为k的数据,放入第k个箱子, (收集) :然后按序号草将非空的连接 代码 #include <stdio.h> #include <stdlib
56
0
0
哈希算法Hush
摘要:总结: 总结: --1.赋值函数:memset(hash,0,sizeof(hash)); 需要调用头指针#include <string.h> --2.假无限数组: i=data%p; 数据结构实验之查找七:线性之哈希表 改进前 # include<stdio.h> # include<strin
105
0
0
数据结构 四、字符串 和 KMP算法
摘要:串:内容受限的线性表 (数据元素只能是字符) 串:String 字符组成的有限序列 顺序储存用的多 案例:病毒感染检测(病毒dna环状) 结构类型定义 #define MAXLEN 255 typedef struct { char ch[MAXLEN+1]; int length; }SStrin
126
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起