- 博客(37)
- 收藏
- 关注
原创 差分模板题
题目描述输入3 21 2 31 2 43 3 -2输出5 6 1题目分析O(n)复杂度必定会超时所以需要找到一个O(1)复杂度的解题方式此时想到前缀和对于任意一个[l,r]的子序列,只需将a[l]加上k,a[r]减去k,再应用前缀和即可#include<bits/stdc++.h>using namespace std;typedef long long ll;int n,m;const int N = 1e5 + 5;ll arr[N],sum[N];
2022-01-10 12:11:16
314
原创 DataFrame修改某一行某一列的值[坑点]
# df.iloc[index]['column_name'] = val 这种方式是错误的df['column_name'].iloc[i] = val # 正确
2021-10-30 23:04:16
7307
3
原创 原生js实现表单验证
文章目录一、表单验证效果展示二、具体代码实现一、表单验证效果展示二、具体代码实现<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, init
2021-09-01 14:24:27
707
原创 KNN实现数据分类
knn【K-Nearest-Neighbors】算法是机器学习中很常见的一个算法,主要用于数据分类,属于有监督学习。本文结构安排knn算法核心思想knn算法demo【python手写实现iris数据集分类】python实现数据可视化对超参数k的思考knn算法优缺点分析knn算法核心思想百度的解释 如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别自己的理解 从k众心理,即找到离自己最近的k个数据,选择其中大多数数据所属类别,
2021-06-30 19:09:07
1235
原创 ifcfg-eth0【Linux】
设置IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0配置项DEVICE=物理设备名IPADDR=IP地址NETMASK=掩码值NETWORK=网络地址BROADCAST=广播地址GATEWAY=网关地址ONBOOT=[yes|no]引导时是否激活设备USERCTL=[yes|no]非root用户是否可以控制该设备BOOTPROTO=[none|static|bootp|dhcp]引导时不使用协议|静态协议|BOOTP协议|DHCP协议H
2020-10-25 00:30:35
132
原创 useradd【Linux】
作用用于建立用户账号useradd用来建立用户账号 账号建立好后 再用passwd命令设定账号的密码可用userdel删除账号使用useradd指令所创建的账号 实际保存在/etc/passwd 文本文件中语法useradd 【选项】用户名选项-c:备注;加上备注文字 备注文字会保存在passwd的备注栏位中-d:登入目录;指定用户登入时的起始目录-D:变更预设值-e:有效期限;指定账号的有效期限-f:缓冲天数;指定在密码过期多少天后关闭该账号-g:群组;指定用户所在的群组-G:
2020-10-24 23:46:35
122
原创 双指针小算法
class Solution {public: int maxArea(vector<int>& height) { int ans = 0; int i = 0, j = height.size() - 1; while (i < j) { int sum = min(height[i], height[j]) * (j - i); ans = max(ans, sum); if (height[i] <= height.
2020-10-14 01:29:34
116
原创 寻找两个正序数组的中位数
题目描述题目链接给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,0
2020-10-11 14:22:08
101
原创 (持续更新中...)Linux的归纳总结(基于韩顺平老师)
/根目录下的一些常见目录root 管理员的主目录usr 存放用户使用的系统命令和应用程序等信息home 一般用户的主目录或FTP站点目录bin 存放用户可执行的程序sbin 要具有一定权限才可以使用的命令,存放系统启动时所需执行的程序mnt 默认挂载光驱和软驱的目录,装置的文件系统加载点etc 存放配置相关文件var 具变动性质的相关程序目录,logboot 存放引导相关的文件,操作系统启动时所需的文件dev 接口设备文件目录,如had表示硬盘proc 目前系统
2020-09-29 00:34:32
150
原创 二叉树遍历思想实现幂集
今天上完数据结构课后对于二叉树思想在某些问题上的恰到好处的运用感到amazing记录一个印象最深刻的例子利用二叉树实现幂集在离散数学中我们知道若一个集合中包含n个元素则此集合的所有子集的个数和为恰好是一颗满二叉树的叶子结点的个数(偷一张老师的图来做笔记)核心代码template<class T>void printPowerSet(vector<T>& set, vector<T>& ans, int pos) { if (pos
2020-09-23 00:22:06
251
原创 Moore Voting
Problem Description:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always exist in the array.Example 1:In
2020-09-10 20:03:19
106
原创 Tarjan‘s Algorithm Practice
Tarjan’s Algorithm——求强连通分量的线性时间的算法如果有两个vertex可以互相到达,那么则称两个顶点强连通若graph中任意两个顶点都可以互相到达,那么则称这个图为一个强连通图其中的一个子图称为强连通分量基于对图的dfs,每个强连通分量是搜索树中的一颗子树维护两个数组dfn[N],low[N],dfn[x]表示顶点x的时间戳,low[x]表示x或x的子树能够回溯的栈中最小的次序模板题1题目描述给出一个 n 个点,m 条边的无向图,求图的割点。输入格式
2020-08-20 20:47:06
224
原创 Manhattan Distance
Formuladis(i,j)=|xi-xj|+|yi-yj|E.G.InputThe input consists of at most 100 datasets, each in the following format.h wr1…rhsThe two integers h and w in the first line are the height and the width of the OSK, respectively. They are separated by a
2020-08-11 11:18:50
272
原创 SPFA Algorithm Template
#define _CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>using namespace std;const int LEN = 2e5 + 5;struct Edge { int begin, end, weight; int next;}edge[LEN];int n, m, head[LEN], dis[LEN];int s, e;bool vis[LEN];int cnt[LEN];queue<int>
2020-08-03 23:47:09
171
原创 Floyed Practice
一.入门级别城市交通费【问题描述】有 n 个城市,编号 1~n。其中 i 号城市的繁华度为 pi。省内有 m 条可以双向同行的高速公路,编号 1~m。编号为 j 的高速公路连接编号为 aj 和 bj 两个城市,经过高速公路的费用是 wj。若从城市 x 出发到某城市 y,除了需要缴纳高速公路费用,还要缴纳“城市建设费”(为从 x 城市到 y 城市所经过的所有城市中繁华度的最大值,包括 x 和 y 在内)。现提出 q 个询问,每个询问给出一组 x 和 y,你需要回答从 x 出发到 y 城市,所需要
2020-08-02 10:33:46
469
原创 Dijkstra Algorithm
Dijkstra算法 求解最短路径问题用于求解一个结点到其余各节点的最短路径运用广度优先搜索思想算法思想假设出发顶点为v,顶点集合为V{v1,v2,…},v到V中各顶点距离构成的集合为D{…}从D集合中找到di最小的一个移除集合(除它本身),并且移出V中所对应的顶点viD中元素进行更新,di=min(di,从v出发经过上次步骤所得到的一系列vi到达D中未被访问过顶点的距离)重复执行上述步骤,直到找到所有的目标顶点具体实现const int maxNum = 100;const in
2020-08-01 15:12:09
251
原创 筛选素数算法
素数筛选步骤首先,将数组isPrime[]置为true然后,令isPrime[0]=isPrime[1]=false依次用2,3,5,7…进行筛选,只要是他们的倍数就置为false具体实现const int LEN = 10000000;int isPrime[LEN];void init() { memset(isPrime, 1, sizeof(isPrime)); isPrime[0] = isPrime[1] = 0; for (int i = 2; i <= sqrt
2020-07-30 00:27:58
306
原创 Manacher算法
Manacher算法 处理字符串中关于回文串的问题优点:可以以O(n)的时间,维护一个数组,依次计算出字符串中每一个字符所对应的最长的回文串半径大致思路:在原字符串的每两个相邻字符中插入一个不同于原字符串中字符的分隔符,一般用‘#’同时在原字符串的首尾添加上不同的分隔符通过这种操作使得原字符串的size无论是奇数还是偶数,最后都会变成奇数(previous_size*2+3)模板题题目描述给出一个只由小写英文字符a,b,c,…y,z 组成的字符串 S ,求 S 中最长回文串的长度字符
2020-07-23 21:02:02
152
原创 Kruskal算法
Kruskal算法 求最小生成树的一种算法Kruskal算法:以边为中心首先按照所提供边的权值进行升序排序(连接n个顶点在不形成回路的情况下形成n-1条边)构造一个只有n个顶点的生成树,按照边权值的大小依次加入到这颗生成树中,而且不能产生回路,直到加了n-1条边形成一颗MST为止实现代码#include<bits/stdc++.h>using namespace std;const int LEN = 50;int n,m;//n代表顶点个数 m代表原先边数int nu
2020-07-18 11:30:57
220
原创 Prim算法
Prim算法 求最小生成树的一种算法最小生成树(MST):给定一个带权的无向连通图,要求得到一颗生成树,使得树上所有边的权值相加和最小Prim算法:以点为中心先选定一个顶点作为生成树的起始点,并且将该顶点标记为已访问过然后用这颗生成树中已有的顶点分明去寻找与它相邻且未被它访问过的顶点,记录下各自的权值,选择其中带有最小权值的顶点,并把它标记为已访问过重复第二部操作,直到所有的顶点均被访问,此时有n-1条边Prim算法案例T1题目描述某国有n个城市,它们互相之间没有公路相通,因此交通
2020-07-17 20:09:22
331
原创 单调队列
单调队列特点队列中的元素单调运用deque容器实现,保证能在两端操作由于每个元素最多进队一次,出队一次,所以O(1)单调队列例题输入输出样例8 31 3 -1 -3 5 3 6 7-1 -3 -3 -3 3 33 3 5 5 6 7在线OJ暴力搜索反正是会TLE,考虑单调队列O(n)#define _CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>using namespace std;int n, k, p[
2020-07-16 11:28:49
133
原创 开关问题
1.开灯题目背景该题的题目是不是感到很眼熟呢?事实上,如果你懂的方法,该题的代码简直不能再短。但是如果你不懂得呢?那。。。(自己去想)题目描述首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来……直到第N个人为止。给定N,求N轮之后,还有哪几盏是开着的。输入格式一个数N,表示灯的个数和操作的轮数输出格式若干数,表示开着的电灯编号输入输出样例51 41<
2020-07-14 23:54:40
1002
原创 二叉树习题
①考察深度运用了递归的思想从第一个结点,深度为1开始DFS#define _CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>using namespace std;const int LEN = 1e7 + 5;struct Node { int left; int right;}node[LEN];int ans;void dfs(int root, int depth);int main() { int n; cin
2020-07-14 14:05:05
207
原创 位运算
记得之前C++老师讲过一些关于位操作的知识,今天系统的整理一下位运算定义参考来源:位运算程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。几个位运算按位与&:当两个位均为1时,结果才会是1按位或|:当两个位均为0时,结果才会是0异或^:两个位相同为0,相异为1取反~:0->11->0左移<<:左移相应位数,右边空出的位补0,左边的位将被移出,相当于×2右移>>:右移相应位数,右
2020-07-12 23:02:46
191
原创 八皇后问题
回溯算法经典案例——八皇后问题题目描述:在8*8的国际象棋上摆放八个皇后,使任意两个皇后都不能处于同一行,同一列或同一斜线上,问有多少种摆法idea:先把第一个黄后放在(1,1)再把第二个皇后放在(2,1), (2,2),…直到找到一个解为止continue只要得到一个答案,就会开始回溯,即将第一个皇后再放置在第一行的其他列,反复上述过程核心代码void Print();void Print() { for (int i = 0; i < n; i++) { print
2020-07-11 17:14:09
821
原创 小算法
一.求模算法资料来源:运算规则模运算与四则运算有点相似,except除法(a+b)%p=(a%p+b%p)%p;(a-b)%p=(a%p-b%p)%p;(a·b)%p=(a%p·b%p)%p;a ^ b % p = ((a % p)^b) % p例题链接:Fibonacci AgainAC code#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//(a+b)%p=(a%p+b
2020-07-10 23:41:31
201
原创 STL——string
string常用函数构造函数string(const char* c)string(int len,char c) 用len个字符c来初始化字符串stringstring(string& s)字符串拼接+=增s.insert(pos,str)s.insert(pos,n,c)s.insert(pos,first,last)删erase(pos)删除pos迭代器处的一个字符erase(pos,n)删除从pos迭代器开始的n个字符erase(first,last)删除从fi
2020-07-08 19:47:18
155
原创 动态规划练习
动态规划算法核心思想将大问题划分成若干个子问题,从而一步步获取最优解的处理算法与分治算法相同的是,均将待求解问题划分成一个个小子问题,从这些子问题得到原问题的解与分治算法不同的是,动态规划得到一系列的子问题是互相有关联的,而不是独立存在经典背包例题——01背包题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早金明就开始做预算,但是他想买的
2020-07-07 20:13:35
267
原创 大数加法
A+B大数加法题目来源 A+B高精题目描述:高精度加法,相当于a+b problem,不用考虑负数.看到这题时,就想到用string来解决,也想到了之前做过的一道题目,很相似的A+B当时的AC代码#define _CRT_SECURE_NO_WARNINGS#include<cstdio>#include<iostream>#include<string>#include<algorithm>using namespace std
2020-07-05 21:18:54
208
原创 图(plus)DFS(e.g.)
图的专有名词顶点(vertex)边(edge)路径无向图有向图带权图 边带权值**ABCDE均为顶点,AB BC等均为边A到C的路径有A->B->C,A->C上图为一个无向图,顶点之间的连接无方向顾名思义,有向图就是顶点之间的连接有方向图的表示方式1.邻阶矩阵(二维数组)2.邻接表(链表)DFSDFS,即深度优先搜索首先访问第一个邻接结点,再以这个结点作为初始访问结点,访问它的第一个邻接结点,是一个递归的过程思路访问初始结点,并标记它已被访问查找它
2020-07-04 19:37:34
172
原创 二叉排序树BST
二叉排序树Java实现定义对于BST中的任何一个非叶子节点,要求左子节点的值比当前结点的值要小,右子节点的值比当前结点大,且不存在相同的值二叉排序树的创建有用到递归的思想若要插入结点的值小于当前结点的值,则在左子树中插入若要插入结点的值大于当前结点的值,则在右子树中插入核心代码public void add(Node node) { if(node==null)return; if(node.data<this.data) { if(this.left==null) {
2020-07-03 23:13:37
165
原创 二叉树Notes
相比数组与链表1.数组存储方式:优:可以直接通过下标访问数组元素,效率高。对于有序数组,直接采用二分搜索就OK缺:增删效率太低,因为移动了差不多整个数组2.链表存储方式:优:增删效率高缺:检索效率低,每次要从head结点开始搜索3.树存储方式:能够提高存储,读取数据的效率二叉树这颗二叉树共有三层,...
2020-07-02 13:57:08
666
原创 最近点对问题
分而治之题目来源:Quoit DesignProblem DescriptionHave you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded.In the field of Cyberground, the position of each toy is fixed, and t
2020-07-02 00:48:37
300
原创 DP算法实践
DP(动态规划算法初步)情形一题目来源(http://acm.hdu.edu.cn/showproblem.php?pid=1003)题面大概意思就是要找到最大和的子数列,并且输出其和,其起始索引+1,其终止索引+1做这道题时,我一开始的思路是直接暴力遍历找到所求解上代码#define _CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>using namespace std;int p[100005];int main() {
2020-07-01 00:20:09
2083
2
原创 快速排序
快排最近在看排序算法看到快排时,看到有三种不同思想的的快排算法这里 就选取一种我认为比较好接受的时间复杂度平均时间复杂度O(nlogn)最坏情况下为O(n^2),与冒泡排序一样,同属于交换排序且它是对冒泡排序的一种改进思路首先通过一次排序将要进行排序的数据分成两个部分,其中,左边的所有数据都比右边的数据要大然后递归进行,对左边部分快排,再对右边部分快排代码总体设计int findMid(int* arr, int left, int right);void qSort(int*
2020-06-30 16:51:08
182
原创 堆排序
排序之堆排序看了B站的数据结构中的堆排序后,在感慨了堆排序的高效(排序八百万个数据只需3seconds)就juo得自己应该记下些什么堆排序时间复杂度无论在哪种情况下好像均为O(nlogn)空间复杂度为O(1)并且在《数据结构与算法分析》这本书中看到堆排序是一个非常稳定的算法且与树结构联系紧密堆结构堆是一种完全二叉树若升序,则使用大顶堆(每个父结点的值均大于等于子结点的值)若降序,则使用小顶堆(每个父结点的值均小于等于子节点的值)以升序为例,使用大顶堆...
2020-06-28 23:24:04
191
原创 6-1单链表逆转
@@数据结构与算法题目集单链表逆转初步想法在数据结构与算法这门课程中终于与熟悉的链表打了个照面,首先看到单链表逆转这道题,脑海里有闪现出几种solutionsSolution 1:重新创建一个链表,以原链表为辅助,给新链表添加数据,再返回这个新链表Solution2:不动节点位置,只改变数据域,即对称swap数据However根据这道题的意思,似乎只有Solution1才是一个good idea,毕竟人家函数头都给出来了…全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码
2020-06-28 22:22:42
291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人