自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 435-无重叠区间

问题给定一组区间,找出没有重叠区间最多的区间个数。思路[谷歌高畅力扣刷题笔记]贪心算法,贪心策略是优先保留结尾小且不相交的区间。首先根据右边界升序排序,然后依次比较左边界和前面的右边界:没有重叠就是满足条件的区间,有重叠就更新右边界。代码 int eraseOverlapIntervals(vector<vector<int>>& intervals) { if(intervals.empty()) { // 没有元素 ..

2022-05-21 14:17:46 199

原创 135-分发糖果

题目给出一组孩子评分,要求;a 每个孩子至少获得一颗糖果b 相邻两个孩子,评分高的孩子糖果数多问题:最少共需要多少颗糖果思路[谷歌高畅力扣刷题笔记]从前往后遍历,如果后一个孩子评分高,保证后一个孩子糖果数多从后往前遍历,如果前一个孩子评分高,保证前一个孩子糖果数多(这里要保证前一个孩子和其左右两个孩子的比较,故使用max)代码# include<vector># include <numeric> // accumulate头函数int c..

2022-05-20 09:13:59 159

原创 8-字符串转整数

题目思路代码

2022-05-19 13:08:17 118

原创 15-三数之和

题目思路2.1 第一种思路难点:三元组不重复,使用三层循环遍历的时候没办法避免{-1,0,1}{0,1,-1}的情况解决方案:首先将数组排序,然后使用三层循环查找,没有重复的就插入结集(排序可以确保{-1,0,1}和{0,-1,1}的情况)问题:三层循环时间复杂度太大2.2 第二种思路代码(1)第一种思路 vector<vector<int>> threeSum(vector<int>& nums) { so..

2022-05-18 11:49:03 85

原创 953-验证外星语词典

题目一组单词words,根据给定字母表order次序判断单词是否按照字典序排列思路2.1 依次判断相邻单词。(1) 后一个单词的第i个字母在前->不按字典序排列(2)前一个单词的第i个字母在前->结束这两个单词的比较(3)注意两单词长度不等的情况,注意一个单词是另一个单词前驱的情况(app和apple)2.2 将单词数字化然后用is_sorted比较首先将字典数字化,然后用字典将每个单词变成数字组合[出处]代码(1)第一种思路 bool isAlien..

2022-05-17 07:40:27 89

原创 12-整数转罗马数字

题目将十进制整数转换为罗马数字思路笨方法,从大到小逐级考察,注意七种常规字符可以有多个,两位字符只会有一个。代码 string intToRoman(int num) { string s = ""; while(num) { if(num>=1000) { int cnt = num/1000; num %= 1000; ..

2022-05-06 09:58:20 76

原创 24-两两交换链表中的节点

题目交换单链表节点(没有头节点)思路(1)逐步遍历,相邻交换         注意节点为空的情况,包括头节点为空和更新节点为空两种。(2)递归思路(leetcode官方)         a->b->c:b节点做新的头节点,a节点指向从c节点得到的交换链表,b节点指向a节点。代码(1)第一种..

2022-05-04 11:55:40 342

原创 31-下一个排列

题目根据字典序规则,找到给定序列的下一个序列;如果给定序列是字典序的最后一个序列,给出当前字典序下的第一个序列。思路第一步,从右侧开始,找到一个完整的非递增序列,即nums[i+1: n-1]是最长的非递增序列。第二步,交换第i个元素和第一步找到序列中第一个比i位置元素大的元素。第三步,将第一步的序列转置变成非递减序列。代码 void nextPermutation(vector<int>& nums) { int i = nums.s..

2022-05-04 11:50:38 84

原创 13-罗马数字转整数

题目 13-罗马数字转整数思路第一种 遍历字符串,单独处理4、9、40、90、400、900第二种 使用unordered_map存储数值量;IV=‘V’-‘I’, VI=‘V’+‘I’,下一位数值大用减法,下一位数值不大用加法。代码class Solution {public: int romanToInt(string s) { int ans = 0; int i = 0, n = s.size(); while (i < .

2022-05-02 12:16:37 102

原创 9-回文数

题目 9-回文数思路第一种负数都不是回文数, 0一定是回文数; 对正整数翻转后比较。第二种负数和以结尾的正整数一定不是回文数; 对其他数字翻转一半,偶数前后部分相等,奇数部分中位数前后部分相等。代码class Solution {public: bool isPalindrome(int x) { if(x < 0) { return false; } else if(!x) { return .

2022-05-02 11:19:13 129

原创 【无标题】

题目 剑指 Offer 06. 从尾到头打印链表1.1 题目内容输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。1.2 解题思路遍历链表,用列表存储节点值,翻转列表并输出。注意点:链表没有空的头节点,从头节点开始存值。解题方案:1.2.1 使用reverse方法翻转数组1.2.2 使用python列表直接翻转1.2.3 递归法直接拼接下一个节点值和当前节点值(力扣题解)(3)代码第一种方法# Definition for singly-linked list..

2022-05-01 09:19:03 1020

原创 Active Object Localization with Deep Reinforcement Learning 解读

1.参考资料(1)论文原文(2)pytorch源码(arxiv提供)(3)tensorflow源码(arxiv提供)(4)pytorch源码修改版在(2)基础上添加了一些注释,做了一些修改,方便理解。2.论文解读3.参考资料(4)文件解读...

2022-04-02 22:44:47 613 1

原创 软件工程问答题总结1

1、面向对象程序设计有哪些优点?1.1、易维护采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。1.2、易扩展通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;我们可以在标准的模块上(这里所谓的”标准”指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;1.3、模块化封装可以定义对象的属性和方法的访问级别,通过不同的访问修饰符对外暴露安全的接口,防止内部数

2021-03-06 22:31:47 619

原创 单链表归并排序

/*输入元素,-1结束输入*/#include <iostream>#include <malloc.h>using namespace std;typedef struct LNode { int data; struct LNode *next;} *LinkList;void List_TailInsert(LinkList &L) { int c; LinkList p; L = (LinkList) malloc (sizeof(LNo

2020-10-21 20:43:13 102

原创 二叉树的横向打印

/*二叉链表的树状打印AB#D##CE#F###124##5##36##7##*/#include <iostream>#include <malloc.h>using namespace std;const int maxsize = 100;typedef struct BiNode{ char data; BiNode *lchild, *rchild;}*BiTree;void createTree(BiTree &t){ char

2020-09-15 15:56:18 605

原创 循环链表实现k阶斐波那契数列

/*循环队列 实现 k阶斐波那契数列注意:1、maxsize是队列大小+1,输入的k值不能超过max-1 2、使用循环注意更新循环变量 输入:10 1020 1030 20*/#include <iostream>#include <malloc.h>using namespace std;const int maxsize = 100+1;struct Queue{ int data[maxsize]; int front, rear; in

2020-09-14 14:52:22 446

原创 双循环链表根据查询次数非递增排序

/*双向循环链表新增freq每进行一次locate操作,freq增1并按照freq非递增排序输入:1 2 3 4 5 -1 */#include <iostream>#include <malloc.h>using namespace std;const int FLAG = -1;typedef struct DNode{ int data; struct DNode *prior, *next; int freq;}DNode, *DLinkLi

2020-09-14 09:11:01 98

原创 递归删除二叉树结点并释放空间

/*递归算法删除值为x的整棵子树,并释放空间输入:高度为3的满二叉树:124##5##36##7## 删除结点:2 6 */#include <iostream>#include <malloc.h>#include <deque>using namespace std;const int MAXSIZE = 100;typedef char ElemType;typedef struct BiTNode{ ElemType data;

2020-09-14 08:36:50 2192 1

原创 冒泡排序改写

/*起泡排序算法(冒泡排序算法的改进)经控制作用的布尔变量改为一个整型变量,指示每一趟排序中进行交换的最后一个记录的位置并以它作为下一趟起泡排序循环终止的控制值*/#include <iostream>using namespace std;void bubbleSort(int a[], int n){ int i, j; int isChange; isChange = 0; for(i=0; i<n; i++){ for(j=n-1; j>=isCha

2020-09-05 17:53:23 346

原创 非递归快速排序(待排记录数<=3,使用直接插入排序)

/*非递归快速排序使用栈存放待排序列的首尾下标 */#include <iostream>#include <stack>using namespace std;int partition(int a[], int low, int high){ int pivok = a[low]; while(low<high){ while(low<high && a[high]>pivok) high--; a[low] = a[h

2020-09-05 10:19:02 95

原创 奇偶交换排序

/*奇偶交换排序思路:使用循环,先从奇数位置开始两两比较,再在偶数位置两两比较,直到全部有序出现过的错误:奇偶循环中的循环条件要设置为i+1处,i+1位置可能越界 */#include <iostream>using namespace std;void jiouSort(int a[], int n){ int i; bool isChange = true; while(isChange){ isChange = false; for(i=0; i+1&l

2020-09-05 08:35:23 961

原创 直接插入排序变体

/*直接插入排序第k+1个数做观察哨 */ #include <iostream>#include <malloc.h>using namespace std;const int maxsize = 100;struct List{ int r[maxsize]; int length;};void insertSort(List &L){ int i, j; if(L.length){ for(i=2; i<=L.length; i++

2020-09-05 08:18:33 88

原创 相似二叉树(非递归)

/*相似二叉树判断:非递归实现相似:两个二叉树都是空的二叉树或只有一个根结点 或者 左右子树都是相似的通俗说法:两棵树的结构一样,一棵树某个位置有结点另一棵树相对应位置也有思路:层次遍历的变体,依次判断两树对应结点是否都空或都不空如果只是通过先序输入判断是否相似,可以直接比较序列的对应位置 */#include <iostream>#include <cstdlib>#include <queue>using namespace std; typ

2020-08-31 07:53:39 436

原创 树(二叉链表,非递归)两结点的最近公共祖先结点

/*二叉链表非递归 查找两个结点的最近公共结点思路:把一个结点的全部父结点都放到栈中(类似于查找从根结点到某一结点的路径)依次出栈判断这棵树的后代中是否包括另一个结点*/#include <iostream> #include <cstdlib>using namespace std;const int maxsize = 100;typedef struct BiTNode{ char data; struct BiTNode *lchild, *rc

2020-08-29 10:15:44 299

原创 判断顺序存储的二叉树中u结点是否是v结点的子孙结点(已知孩子结点)

/*使用两个数组存储一个结点的左孩子和右孩子(数字存储,0表示空),判断结点u是否为结点v的子孙思路:将结点v的非空子结点全部入队 ,判断是否有结点u 输入深度为3的满二叉树:72 34 56 70 0 0 0 0 00 0uv值:1 2; 2 1; 1 1 ; 0 0 ;6 2;6 3*/#include <iostream>using namespace std;const int maxsize = 100;bool f(int L[], int

2020-08-29 09:16:28 637

原创 判断顺序存储的二叉树中u结点是否是v结点的子孙结点(已知父结点)

/*一维数组T表示二叉树,第i个分量表示第i个结点的双亲,判断结点u是否为结点v的子孙结点思路:将结点u的祖先结点全部入队,看有没有结点v输入:高度为3的二叉树:0 1 1 2 3uv: 5 2;2 5;1 3;3 1;4 2;2 4;4 3;3 4; */#include <iostream>using namespace std;const int maxsize = 100;bool f(int T[], int n, int u, int v){ //结点u

2020-08-29 09:15:34 688

原创 求二叉树各个结点的子孙结点数

/*在二叉链表中增加DescNum域,求二叉树每个结点的子孙数目并存入DescNum域思路:初始全部设置为0,使用递归计算子孙结点数输入:三层的满二叉树:124##5##36##7##*/#include <iostream>#include <malloc.h>#include <deque>using namespace std;const int maxsize = 100;typedef struct BiTNode{ char da

2020-08-28 08:45:03 3118

原创 二叉树到指定叶子结点的路径(要求深度比树的深度小1)

/*二叉树求一条路径,从根结点开始到叶子结点,长度=深度-1多条输出最左边的一条思路:1、求二叉树的深度2、层序遍历 1数值和长度是否符合 2是不是叶子结点参照 二叉树从根结点到指定结点的路径问题后序非递归遍历的变体注意:由于栈是从-1开始计数的,所以栈非空的条件必须设置为top>=0,而不能设置为top>0,否则就会出现错误 输入:深度为3的满二叉树124##5##36##7##分别输入结点4 5 2 3查看路径*/#include <iostrea

2020-08-28 08:30:53 331

原创 二叉树繁茂度

/*二叉树的繁茂度 = 最大宽度 * 树的高度思路:分别求树的最大宽度和高度,求乘积输入:高度为3的满二叉树:124##5##36##7##高度为3的完全二叉树:124##5##36###*/#include <iostream>#include <malloc.h>#include <deque>using namespace std;const int maxsize = 100; //三元组最多个数 typedef struct BiT

2020-08-27 13:24:20 1900

原创 根据三元组创建二叉树

/*三元组输入二叉树(父结点,子结点,标识符(L/R))层次输入构建对应的二叉树举例^ALABLACRBDLCELCFRDGRFHL^^L二叉树: A / \ B C / /\ D E F \ / G H思路:层次遍历的变体*/#include <iostream>#include <malloc.h>#include <deque>using namespace std;cons

2020-08-26 15:04:01 680

原创 复制二叉树

递归/*复制一棵二叉树的非递归算法*/#include <iostream>#include <deque>#include <malloc.h>using namespace std;typedef struct BTNode { int data; struct BTNode *left, *right;}*BiTree;BiTree creat_bt(){ //按扩展前序建二叉树 BiTree t; int x;

2020-08-26 07:59:25 435

原创 递归求平均值

/*递归套餐*/#include <iostream>using namespace std;//递归求平均值double diguiAvg(double L[], int n, int i, int sum) { if(i==n-1) return (sum+L[i])/n; else diguiAvg(L, n, i+1, sum+L[i]);}double diguiAvg1(double A[], int n){ float avg; if(n==1)

2020-08-24 08:14:02 810

原创 单向循环链表改为双向循环链表

/*单项循环链表改双向循环链表data数据域,next后继结点指针域,prior前驱结点指针域说明:这里的链表带头结点*/#include <iostream> #include <cstdlib>using namespace std;const int flag = -1;typedef struct SiLinkCirList{ int data; struct SiLinkCirList *next, *prior;}*List;//创建单向循环

2020-08-20 08:17:43 3095

原创 单链表模拟循环队列

/*带头结点的循环链表表示队列只设一个指针指向队尾元素结点编写相应的队列初始化、入队列和出队列的算法*/#include <iostream>#include <cstdlib>using namespace std;const int flag = -1;typedef struct Queue{ int data; struct Queue *next;}*LinkQueue;LinkQueue initList(LinkQueue &Q){

2020-08-19 14:17:29 971

原创 单链表(升序)交集,结果放到一个单链表中

/*单链表AB递增有序找到相同的元素放到A中(最后A是交集)最后的交集元素各不相同*/#include <iostream>#include <cstdlib>using namespace std;const int flag = -1; typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}*LinkList;void tailInsert(LinkL

2020-08-18 08:15:45 224

原创 有序的线性表ABC,在A中删除BC的交集

线性表是单链表/*递增有序的单链表ABC(表内元素可以重复)删去表A中BC的交集元素*/#include <iostream>#include <cstdlib>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode, *LinkList;//尾插法创建链表//输入元素单个空格分隔,回车结束输入 void

2020-08-18 08:02:36 879

原创 删除单链表中值相同的多余元素

/*删除单链表(有头结点)中所有值相同的多余元素,同时释放被删除的结点空间思路:依次遍历单链表中的全部结点,判断该位置后边有没有重复的结点,如果有重复的结点,则删除该结点并释放空间 */#include <iostream>#include <cstdlib>using namespace std;const int flag = -1;typedef int ElemType;typedef struct LNode{ ElemType data; str

2020-08-15 09:51:05 2594

原创 两个单链表的批量插入删除

/*指针la和lb分别指向两个 无头结点 单链表中的首元结点。从表la中删除第i个元素起共len个元素,将它们插入到表lb中第j个元素之前。思路:找la表的第i-1、i、i+len-1个结点,找lb表第j-1个结点删除:把la表第i-1的结点指向第i+len的元素插入:把lb表第j-1的结点指向la表第i个结点,la表第i+len-1的结点指向lb表第j个结点*/#include <iostream>#include <cstdlib> using namesp

2020-08-15 09:29:59 305

原创 提取单链表中不重复的元素

/*集合A包含集合B中不重复的元素思路:已知一个"纯集合"B,试构造一个集合 A,使 A 中只包含 B 中所有值各不相同的数据元素。 */#include <iostream>#include <cstdlib>using namespace std;const int flag = -1;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}*LinkLi

2020-08-14 07:55:27 481

原创 单链表合并

/*已知集合 A 和 B,求两个集合的并集,使 A=A∪B,且 B 不再单独存在。 */#include <iostream>#include <cstdlib>using namespace std;const int flag = -1;typedef int ElemType;typedef struct LinkNode{ ElemType data; LinkNode *next;}*LinkList;LinkList List_TailInser

2020-08-13 13:55:13 254

数据结构部分代码整理.zip

数据结构部分代码整理.zip

2021-06-18

计算机院导师信息.zip

考研选导师参考

2021-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除