数据结构与算法
数据结构与算法
沉浮一湘蕉
心若沉浮,浅笑安然。
展开
-
反向传播算法(Back Propagation,简称BP算法)
前向传播通过训练数据和权重参数计算输出结果;反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新。原创 2023-04-18 14:15:11 · 346 阅读 · 1 评论 -
数据结构与算法大纲
原创 2022-04-18 09:57:17 · 427 阅读 · 0 评论 -
C++算法题常用函数及其头文件
【C++基础】算法题中那些常用的头文件_流水线程序员的博客-CSDN博客_算法的头文件原创 2022-04-17 21:49:25 · 238 阅读 · 0 评论 -
C/C++字符串处理函数大合集(链接转发)
c\c++ 字符串处理大集合[转] - vranger - 博客园1 rember this 2 3 strncpy(a,b,5); 4 a[5]='\0'; 5 6 char a[10]; 7 memset(a,'#',sizeofhttps://www.cnblogs.com/vranger/p/3791625.html原创 2022-04-17 21:47:14 · 216 阅读 · 0 评论 -
算法C常用函数库
C 语言中有大量的标准库函数,根据功能不同,声明于不同的头文件中。这些库函数在C++中也能使用。下面分类总结了一些C 语言常用库函数。一、数学库函数C语言数学库函数声明在 math.h 中,C++是cmath。abs(x) //求整型数x 的绝对值cabs(struct complex znum) //返回复数znum的绝对值cos(x) //x(弧度)的余弦fabs(x) //求浮点数x 的绝对值labs(long n) //返回长整型参数n的...原创 2022-03-23 21:27:33 · 1142 阅读 · 0 评论 -
算法刷题---常用字符串函数
1、find():find函数有四种变体:2、rfind():rfind()方法:查找子字符串或字符最后一次出现的位置。3、find_first_of():find_first_of()方法:在字符串中查找参数中任何一个字符首次出现的位置。4、find_last_of():find_last_of()方法在字符串中查找参数中任何一个字符最后一次出现的位置。5、find_first_not_of():find_first_not_of()方法在字符串中查找第一个不包含在原创 2022-03-16 20:44:08 · 352 阅读 · 0 评论 -
算法刷题---常用cmath库函数
int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数ex的值double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double v原创 2022-03-16 15:28:41 · 152 阅读 · 0 评论 -
n个数里最小的k个
找出n个数里最小的k个数#include<iostream>#include<vector>#include<algorithm>#include<cstdio>#pragma warning (disable: 4996)using namespace std;int main(){ vector<int> num; int k = 0; int temp; while (scanf("%d",&temp)原创 2021-08-23 16:58:08 · 112 阅读 · 0 评论 -
字符串中找出连续最长的数字串
读入一个字符串str,输出字符串str中的连续最长的数字串。#include<iostream>#include<string>using namespace std;int main(){ string str; cin >> str; int max_num = 0,cur_num=0; int start = 0; string s = ""; int cur = 0; while (cur < str.size()) {原创 2021-08-23 15:20:23 · 102 阅读 · 0 评论 -
平衡二叉树
描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。注:我们约定空树是平衡二叉树。//方法1:自顶向下/* 求出以每个结点为根的树的高度,然后再根据左右子树高度差绝对值小于等于1,,就可以判断以每个结点为根的树是否满足定义。 */int num_...原创 2021-08-22 02:17:04 · 144 阅读 · 0 评论 -
按之字形顺序打印二叉树
描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)。//方法1:BFS+队列vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> res;//输出数组 if(pRoot==NULL) { return res; } queue<TreeNode*> q;//.原创 2021-08-22 01:01:31 · 67 阅读 · 0 评论 -
BFS(Breadth First Search)广度优先算法模板
广度优先搜索(也称宽度优先搜索,缩写BFS)是连通图的一种遍历策略。它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域。BFS算法是利用队列实现的一种搜索算法,逐层向下遍历,从一个点像四周扩散(将可选节点存放于队列中,删除已被使用的节点),使用队列完成操作,通常用于最短路径的寻找。。一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。BFS 的应用一:层序遍历层序遍历要求我们区分每一层,也就是返回一原创 2021-08-22 00:16:01 · 356 阅读 · 0 评论 -
新浪笔试题2019
1.字符串拷贝函数:2.剔除字符串2中出现在字符串1中的字符原创 2021-08-17 20:56:24 · 142 阅读 · 0 评论 -
C++笔试问题
头文件:#include<cstdio> //在C++中拥有在C语言里一样的语法,像输入输出。#include <iostream> //输入输出流,包括输出格式的控制cin / cout#include <stdio.h> //fopen/fclose 打开和关闭文件,格式化输入(scanf)/输出(printf),getchar、putchar、gets、puts#include <vector>//stl容器,动态数组(可变数组),也叫.原创 2021-08-17 20:55:03 · 54 阅读 · 0 评论 -
C++输入输出使用方法(printf,scanf)
例子:输出:printf("%d\n",123);//\n表示换行例子:输入:scanf("%d",&a);原创 2021-07-17 20:03:22 · 676 阅读 · 0 评论 -
C++
1.声明一维动态数组:int *p=new int[size];2.声明二维动态数组:int **p=new int*[size];for(int i=0;i<size;i++){ p[i]=new int[Column];}3.do-while实现:do{ ...... } while(*);...原创 2019-05-06 15:04:12 · 148 阅读 · 0 评论 -
算法学习笔记---链表与数组
1. 数组,所有元素都连续的存储于一段内存中,且每个元素占用的内存大小相同。这使得数组具备了通过下标快速访问数据的能力。但连续存储的缺点也很明显,增加容量,增删元素的成本很高,时间复杂度均为 O(n)。增加数组容量需要先申请一块新的内存,然后复制原有的元素。如果需要的话,可能还要删除原先的内存。删除元素时需要移动被删除元素之后的所有元素以保证所有元素是连续的。增加元素时需要移动指定位置及之后的所有元素,然后将新增元素插入到指定位置,如果容量不足的话还需要先进行扩容操作。总结一下数组的优缺原创 2021-01-12 11:06:03 · 121 阅读 · 0 评论 -
ASCII码
a---z 97--122A---Z 65--900---9 48--57原创 2019-05-07 12:37:51 · 145 阅读 · 0 评论 -
对于一个给定的正整数 n ,请你找出一共有多少种方式使 n 表示为若干个连续正整数的和,要求至少包括两个正整数。
转自:https://blog.csdn.net/enjoying_science/article/details/50357303设等差数列:an=a+(n-1)*d (这里首项为a,公差d=1,第n项为an,前n项和为sn)a1=aan=a+n-1sn=(a1+an)n/2=(2a-1+n)*n/2再回到这个编程上来:我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增...转载 2019-05-06 18:09:33 · 3383 阅读 · 0 评论 -
求两个数的最大公约数的三种算法总结
很有用的总结:转自https://blog.csdn.net/only_invarably/article/details/64967860从键盘输入两个整数,求着两个整数的最大公约数。解题思路:从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数:辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约...转载 2019-05-06 15:34:18 · 4348 阅读 · 0 评论 -
最长回文子串(动态规划)c++
题目描述:给你一个字符串s,找到s中最长的回文子串。递推式:class Solution {public: string longestPalindrome(string s) { int len=s.size(); if(len<2) return s; bool dp[len][len];//布尔型,dp[i][j]表示从i到j是否构成回文 int max_count=1;//最大字...原创 2021-03-25 20:16:52 · 591 阅读 · 0 评论 -
最小路径和(动态规划)c++
题目描述:给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。递推式:dp[i][j]=min(dp[i][j-1],dp[i-1][j])+grid[i][j];class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m=grid.size();...原创 2021-03-25 14:40:12 · 652 阅读 · 0 评论 -
最大子序和(动态规划)C++
题目描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。递推式:dp[i]=max(dp[i-1]+nums[i],nums[i]),result=max(result,dp[i])class Solution {public: int maxSubArray(vector<int>& nums) { int len=nums.size(); int dp[len],resul..原创 2021-03-25 13:45:42 · 309 阅读 · 0 评论 -
最长递增子序列(动态规划)c++
题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。递推式:(考虑题目问什么,就把什么定义成状态。dp[i]表示:以nums[i]结尾的「上升子序列」的长度。)初始化注意:dp[i] = 1,11个字符显然是长度为11的上升子序列。class Solution {public: i...原创 2021-03-24 21:28:27 · 1056 阅读 · 0 评论 -
编辑距离问题c++
题目描述:给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符公式:class Solution {public: int minDistance(string word1, string word2) { int len1=word1.size(),len2=word2.size(); if(len...原创 2021-03-24 16:45:20 · 161 阅读 · 0 评论 -
不同路径问题(动态规划)c++
题目描述:一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?递推式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]class Solution {public: int uniquePaths(int m, int n) { int dp[m][..原创 2021-03-24 15:06:56 · 369 阅读 · 0 评论 -
爬楼梯c++
题目描述:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。递推:dp[i] = dp[i - 1] + dp[i - 2]class Solution {public: int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; ...原创 2021-03-24 14:41:27 · 855 阅读 · 0 评论 -
股票类算法题(动态规划)c++
题目描述给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。递推公式: buy = max(buy, -price[i]) (注意:根据定义 buy 是负数) sell = max(sell, prices[i] + buy) 边界:第一天buy = -prices[0],sell = 0,最后返回 sell 即可。 ...原创 2021-03-24 14:27:12 · 904 阅读 · 0 评论 -
股票买入算法121
题目描述:(单次买入)给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。动态规划解法:class Solution {public: int maxProfit(vector<int>& prices) {...原创 2021-03-23 16:46:48 · 368 阅读 · 0 评论 -
求单向链表中倒数第k个节点(c++):快慢指针/递归
题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。题解1:(快慢指针)1.定义两个指针,快指针 fast, 慢指针 low .2.让 fast先向前移动 k个位置,然后 low 和 fast 再一起向前移动 .3.当 fast 到达链表尾部,返回 low ./** * Definition fo原创 2021-01-12 11:54:07 · 951 阅读 · 0 评论 -
python刷leetcode算法-- 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。...原创 2021-01-05 21:01:03 · 185 阅读 · 0 评论 -
消除类游戏 201512-2
问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。原创 2018-01-19 14:13:32 · 196 阅读 · 0 评论 -
折点计数 201604-1
问题描述 给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。其他的天都不是折点。如下图中,第3天和第6天是折点。 给定n个整数a1, a2, …, an表示销售量,请计算出这些天总共有多少个折点。 为了减少歧义,我们给定的数据保证:在这n天中相邻两天的销售量总是不同的,即ai原创 2018-01-19 13:55:50 · 309 阅读 · 0 评论 -
数位之和 201512-1
问题描述 给定一个十进制整数n,输出n的各位数字之和。输入格式 输入一个整数n。输出格式 输出一个整数,表示答案。样例输入20151220样例输出13样例说明 20151220的各位数字之和为2+0+1+5+1+2+2+0=13。评测用例规模与约定 所有评测用例满足:0 ≤ n ≤ 1000000000。参考代码:#include using namespace std;int main原创 2018-01-19 14:00:41 · 221 阅读 · 0 评论 -
分蛋糕 201703-1
问题描述 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k。 请问当小明的蛋糕原创 2018-01-19 13:16:34 · 152 阅读 · 0 评论 -
火车购票 201609-2
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。 购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几原创 2018-01-19 13:52:00 · 209 阅读 · 0 评论 -
最大波动 201609-1
问题描述 小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。输入格式 输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。 第二行包含n个正整数,依次表示每天的收盘价格。输出格式 输出一个整数,表示这只股票这n天中的最大波动值。样例输入62 5原创 2018-01-19 13:47:28 · 177 阅读 · 0 评论 -
工资计算 201612-2
问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元; 2) A中不超过1500元的部分,税率3%; 3) A中超过1500元未超过4原创 2018-01-19 13:41:41 · 384 阅读 · 0 评论 -
中间数 201612-1
问题描述 在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式 输入的第一行包含了一个整数n,表示整数序列中数的个数。 第二行包含n个正整数,依次表示a1, a2, …, an。输出格式 如果约定序原创 2018-01-19 13:31:24 · 266 阅读 · 0 评论 -
数列分段 201509-1
问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入格式 输入的第一行包含一个整数n,表示数列中整数的个数。 第二行包含n个整数a1,a2, …,an,表示给定的数列,相邻的整数之间用一个空格分隔。输出格式 输出一个整数,表示给定的数列有多个段。样例输入88 8 8 0 12 12 8原创 2020-12-30 14:49:35 · 219 阅读 · 0 评论