自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 堆栈与堆(Stack vs Heap):有什么区别?

更详细的内容可以参考https://mp.weixin.qq.com/s/0GOyRUIrKX5-2h3YNKag3g。

2023-12-07 16:32:23 397

原创 辗转相除法

遍历的思想就是从2开始到b(或者b/2)结束,如果其中某个数都能被两者整除,那该数就是最大公约数。(leetcode 1979. 找出数组的最大公约数)边界是当余数为0时最大公约数为另一个数。边界是当差为0时最大公约数为另一个数。其实是求a、b(a>b)最大公约数。

2023-11-28 22:32:50 459

原创 python语法小问题 {nums[i+1:]}

比如nums=[2,3,4,5,6],i=1,那么nums[i+1]表示的就是nums[2]及以后的数:4,5,6。nums[i+1:]表示从nums的list列表里从i+1及以后的数。

2023-11-07 15:03:08 466

原创 关于数据结构与刷题

从4月开始一直忙着老板的项目和小论文,本来像放弃软开之类的需要编程的工作,毕竟好几个月没学了,基础也不扎实,数据结构也忘得差不多了,没想到华为hr打电话来让投测开,我觉得可以试试,于是开始刷题两周,然后笔试一题也没做出来,悲伤。 4-8月一直在做项目和写小论文还有各种杂七杂八的活,太厌恶了,什么都不想学了。现在缓过来了,感觉写代码还是挺开心的一件事。所以打算重新捡起来。刷题思路现在网上的刷leetcode 的题目...

2021-09-03 21:37:17 402

原创 数据结构与算法——leetcode刷题巩固

距离上一篇已经过去2个月了,实际上在写二叉树的时候看邓老师的视频一直处于一脸懵逼的状态,于是暂时放弃写博文记录,而是一鼓作气把邓老师所有视频看完,然后自己去刷leetcode。后来找到一个讲算法刷题的公众号,跟着刷了一个月多月的题。发现这样学习算法的效率很高。不过刷题的时候也发现,邓老师的课在解题的时候都是大杀器的存在。想借这个说明,之前一直觉得自己直接看邓老师的书和视频是太高看自己了,有一点浪费时间。结果最后发现,如果真的用心去学习,很多东西并没有浪费时间。之后会不间断更新自己的刷题学习笔记。用来做个

2020-12-28 08:44:05 277

原创 数据结构(邓俊辉):二叉树(2.实现)

基本组成单位:二叉树节点,边对应于节点间的相互引用。二叉树节点的模板类:template <typename T>struct BinNode { //成员 T data; BinNodePosi(T) parent; BinNodePosi(T) lc; BinNodePosi(T) rc; int height; //构造函数 BinNode() : parent(NULL), lc(NULL), rc(NULL), height(0){} BinNode(T e,

2020-10-31 15:49:05 312 1

原创 数据结构(邓俊辉):二叉树(1.概念)

二叉树:半线性化结构任何有根有序的多叉树都可以化为二叉树结构。二叉树的基本概念:1.祖先、孩子、度:任意节点V所经过的每个节点都是它的祖先,经过V之后的节点都是它的孩子。没有孩子的称为叶子节点,没有祖先的称为根节点。V的孩子总数称为度数或者度。2.深度和层次:深度:根节点到该节点V的唯一通路所经过的边;高度:该节点V到叶子节点(V的后代之一)的唯一通路所经过的边;规定:仅含单个节点的树的高度为0; 空树的高度为-1;3.二叉树:仅包含左孩子和右孩子,且,每个节点的度数均不超过2;4.

2020-10-31 12:43:36 197

原创 数据结构(邓俊辉):栈与队列

栈和队列,是链表的一种特殊情况。栈:先进后出(FILO)队列:先进先出(FIFO)栈:栈的ADT操作接口:栈的模板类:template <typename T>class Stack : public Vector<T>{public: void push (T const& e){ insert (size(), e); } T pop() { return remove (size() - 1); } T& top() { r

2020-10-30 23:20:18 351

原创 数据结构(邓俊辉):列表及相关概念

链表节点的ADT接口列表节点模板类:typedef int Rank#define ListNodePosi(T) ListNode<T>*//列表节点位置template <typename T> struct ListNode {//双向链表形式实现 //成员 T data; ListNodePosi(T) pred; ListNodePosi(T) succ; //构造函数 ListNode() {};//针对header和trailer ListNod.

2020-10-29 18:28:51 379

原创 模板——函数模板&类模板

模板主要是针对数据类型,不同的数据类型却具有相同的操作形式,比如说,同样是做入栈,int和double由于数据类型不一样,需要做两个栈才能满足需求,诚然可以使用函数重载,但是终归栈的操作是一样的,只是数据类型不一样。所以在此基础上,假设,我们首先将所有的数据类型视为一个大类,将它参数化,等到要用的时候再去调用具体的类型,那么可以大大减少代码量,也使代码更清晰。模板——也就是由上面的问题所引出来的解决机制。将相类似的问题抽象出共同的结构,不同的地方用参数来表达。模板的具体表达为:template <

2020-10-28 11:44:04 106

原创 数据结构(邓俊辉):有序向量(2.查找算法)

首先顺序查找的很简单理解的,就是按顺序一个个从后到前查找(书中约定返回命中的多个相同元素的最大的秩)。template <typename T>Rank Vector :: find(T const& e, Rank lo, Rank hi) const{ while ((lo < hi--) && (e != _elem[hi])); return hi;}容易得出该算法的时间复杂度为:O(n)。以下总结二分查找算法。二分查找算法(版本A)利用的

2020-10-14 23:44:19 375

原创 数据结构(邓俊辉):递归和迭代、分而治之和减而治之(3.汉诺塔)

汉诺塔的问题在leetcode上也有:在经典汉诺塔问题中,有 3 根柱子(ABC)及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。来源:力扣(LeetCode)链接:https://

2020-10-10 13:44:59 159

原创 数据结构(邓俊辉):递归和迭代、分而治之和减而治之(2.例子)

前文介绍了递归和迭代、减而治之和分而治之的概念。数据结构(邓俊辉):递归和迭代、分而治之和减而治之(1.概念)接下来举一些例子来解释:以数组求和为例:采用减而治之(线性递归)的办法:int sum(int A[n], int n){ if(n > 1) return sum(A, n-1) + A[n-1]; else //特殊情况 n<1 ,也就是数组为空的情况,这也是递归停止的条件 return 0;}由上述代码可以看出,该问题采用的是减而治之(规模为n-1的子问

2020-10-10 10:45:17 376

原创 数据结构(邓俊辉):递归和迭代、分而治之和减而治之(1.概念)

两个重要概念:分而治之和减而治之1.减而治之:为求解一个大规模的问题,将其分解为两个子问题:其中一个为平凡的子问题,另一个为规模缩减的子问题。分别求解子问题,由于子问题的求解,得到原问题的解。2.分为治之为求解一个大规模的问题,将其分解为两个若干(一般为两个)子问题,这些子问题的规模大体相当。分别求解子问题,由于子问题的求解,最后得到原问题的解。3.递归什么叫做递归?我的理解就是,递归就是,我不需要知道这个问题的解,我只需要知道这个问题分解成的新的问题的解,然后再反推回来原问题,而且,新的

2020-10-09 22:17:39 859 2

原创 总结:数据结构(邓俊辉)——绪论(基本概念)

1.算法**:是指基于特定的数据模型,旨在解决某一信息处理问题而设计的一个指令程序。**必须包括以下要素:输入与输出基本操作、确定性与可行性有穷性与正确性退化性和鲁棒性重用性证明有穷性和正确性的关键是:找到整个算法所具有的某种不变性和单调性。而这单调性,必然是具有单调递减函数特性的。退化性和鲁棒性是指,即使遇到特殊情况,遇到极端的实际情况,算法也仍然能够充分应对。**2.算法另一个比较关键的地方在于,**算法的效率。法的效率只要从以下几个方面来考察:可计算性难解性计算效率数

2020-10-09 21:24:26 436

原创 封底估算

封底估算的意思可以解释为:预计一个程序将要运行多久。1day = 24h = 1440min = 86400s ~= 10^5s1生 ~= 100year = 36500 day ~= 3*10^4 day ~= 3*10^9 s"三生三世" ~= 10^10sps.没事的时候可以记录看看。

2020-10-09 16:48:46 382

原创 leetcode:拼接链表(二级指针的使用)

题目如下:按照一般的思路,都是采用一级指针来使用。采用二级指针的话,更简洁,但是因为没有使用过二级指针,所以理解起来有点难。决定趁这个机会好好捋一捋。和指针有关的是几个概念:传值调用、传址调用、传引用调用。1.传值调用:就是把实参的值传递过去,能不能改变看实参形参的作用域。2.传址调用:把实参的地址传递过去,在使用解引用间接修改实参的值。3.传引用调用:这个在C++ 可以使用。引用理解为别名,在我的理解中它和传址调用有相似的地方,就是在传递实参数值的同时也传递了实参地址,相当于就是直接修改实参的值

2020-09-29 12:00:55 186

原创 leetcode:拼接链表(依然是建立一个虚拟头结点)(留存需要继续理解)

题目描述如下:这里面使用了一个指针的指针来指向两个链表中娇小的指针。 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* dummy = new ListNode(0); ListNode* cur = dummy; while (l1 != nullptr && l2 != nullptr) { ListNode** pp = (l1

2020-09-28 21:47:02 138

原创 leetcode:建立一个虚拟的头结点

题目如图所示:其实就是删除结点:我的代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int v

2020-09-28 21:23:06 872

原创 链表的建立、遍历、排序、插入、删除等大综合

仅是我自己的一些总结和一些盲点。盲点在于:1.没有把(类型一致)这个概念理解。C++ 里面一直强调相同类型才可以做操作,除非进行强制类型转换。我的问题在于没有搞清楚struct node和struct node *以及int *类型的关系。2.基本数据类型没有搞清楚。应该是因为上课的缘故,为了便于理解,int *实际上应该被理解成一个int类型的指针,但是我理解成了int *这是一种类型,这种类型叫做整型指针,这个没理解好导致后面一直纠结头结点&指向头结点的指针。3.单向链表有头指针、头结点

2020-09-28 16:30:13 150

原创 struct node和struct node *类型以及为什么要使用struct node *类型

在链表的学习过程,有的时候搞不清楚为什么只是一个指针而已,为什么要设置成struct node *类型。昨天又有了一点想法:指针地址的关系,以及指针和指针的不同。一般我们学的都是类似于int *p或者char *p这种单纯结构的指针。而在进行链表的学习时,我们用的是复合结构的指针。可以进行这样的类比:一般单结构的指针,就把它看成是一个单层抽屉,这个抽屉里面装的是需要保存的地址,它指向的是和自己一样的结构的抽屉;而复合结构的指针,把它看成是一个双层的抽屉,它其中一层装的是需要保存的地址,另一层也许装的是

2020-09-28 10:39:22 18279 2

原创 详解:创建链表的过程(为什么我们要使用为指针)

如何创建一个链表呢?首先要明白结点的构成部分:struct listNode{ int data; listNode *next;};一个结点有两个组成部分:一个是数据域,另一个是指针域。当我们要使用它的时候,比如说,给数据域赋值,则使用:p->data = num;链接下一个结点,理解为给指针域赋值:p->next = pNew;为了完整地还原整个过程(实际上用视频更好解释哈哈哈)。# include <iostream>using namespace std

2020-09-27 22:18:25 5220 3

原创 关于const与 指针的到底是改变什么值的问题

参考了这篇博文:https://blog.csdn.net/hai008007/article/details/80592402?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160117404419195188348022%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160117404419195188348022&biz

2020-09-27 10:45:35 145

原创 关于引用的和const的一些概念

文章参考:https://blog.csdn.net/tjy199610_10/article/details/81557404?biz_id=102&utm_term=C++%E5%BC%95%E7%94%A8%E5%BF%85%E9%A1%BB%E6%98%AF%E5%AF%B9%E8%B1%A1&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-81557404&spm=

2020-09-27 10:14:57 98

原创 matlab基础文档总结

matlab基础文档总结基础知识和符号运算1.局部变量与全局变量将局部变量变为全局变量,在变量前加上关键字“global”,同时最好将变量大写。global PI  BETAPI = 3.1416BETA = 0.01232.数值格式formatformat short;等等3.字符数组1.字符串的链接:(1)横向连接:strcat(2)竖向连接:strvcat2.字符串的替换s = strrep(s1,s2,s3)例如:s1='this a string';s2 = strr

2020-09-02 16:54:39 411

空空如也

空空如也

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

TA关注的人

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