自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 数组与链表

数组与链表数组数组是一种一维结构, 专业名词 叫 线性表, 它用一组连续的内存空间,来存储一组具有相同类型的数据。由于其连续内存空间 和 存储·相同类型数据的特点,可以做到 O(1)时间 访问元素的特点。但是插入和删除相对来说就慢了, O(n)。数组 存在访问越界的问题程序会不断打印 hello world.数组越界在C语言中是一种未决行为,并没有规定数组访问越界时编译器应该如何处理。因为,访问数组的本质就是访问一段连续内存,只要数组通过偏移计算得到的内存地址是可润的,那么程序就可能不会报

2020-12-29 19:59:30 150

原创 lc21.合并两个有序链表

题目描述给出两个排好序的单向链表,返回合并排序后新的单向链表思路新建 哨兵节点 dummy 然后进行先行合并即可。新建头部的保护结点 dummy,设置 cur 指针指向 dummy。若当前 l1 指针指向的结点的值 val 比 l2 指针指向的结点的值 val 小,则令 cur 的 next 指针指向 l1,且 l1 后移;否则指向 l2,且 l2 后移。然后 cur 指针按照上一部设置好的位置后移。循环以上步骤直到 l1 或 l2 为空。将剩余的 l1 或 l2 接到 cur 指针后边。

2020-12-27 21:46:44 150

原创 leetcode 829 连续整数求和

leetcode 829 连续整数求和Q: 给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?思路:假设有 K,我们需要满足满足 N = (x+1)+ (x+2) + … + (x+k)即可即 N = k*x + k(k+1)/2即 N-k+1)/2 能够被 k整除假设现在// 如果暴力做的话 O(n) 面试官通常会// 假设有 K项 满足 N = (x+1)+ (x+2) + ... + (x+k) 即可class Solution {public: int c

2020-12-04 19:05:08 159

转载 红黑树

转载 href="http://blog.csdn.net/hackbuteer1/article/details/7740956">http://blog.csdn.net/hackbuteer1/article/details/7740956一、红黑树概述     红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的

2020-08-11 19:46:54 215

原创 VC++快捷键总结

F1: 帮助Ctrl+O  :OpenCtrl+P  :PrintCtrl+N  :NewCtrl+Shift+F2 :清除所有书签F2  :上一个书签Shift+F2 :上一个书签Alt+F2  :编辑书签Ctrl+F2 :添加/删除一个书签F12  :Goto definitionShift+F12 :Goto referenceCtrl+’Num+’ :Displays the next symbol definition or referenceCtrl+’Num-’ :Di

2020-07-28 16:58:29 366

转载 C++计时器函数

1、标准c/c++函数(windows/Linux)1、clock()函数,毫秒精度#include <time.h>clock_t time_begin= clock();Sleep(1000);clock_t time_end = clock();std::cout << (time_end - time_begin) << “ms” << std::endl;1234562、windows系统提供的API接口1、微秒精度Qu

2020-07-28 16:35:03 1496 1

转载 ctime库函数的使用

ctime库函数的使用目录ctime库函数的使用一、基本概念的理解:二、与日期和时间相关的数据结构三、与日期和时间相关的函数及应用获得日历时间2 .获得日期和时间固定的时间格式4 计算持续时间的长度5 分解时间转化为日历时间处定义输出时间格式本文探讨了C/C++中对日期和时间操作所用到的常用功能,并以大量的实例向你展示了#include <ctime>头文件中声明的各种函数和数据结构的详细使用方法。一、基本概念的理解:Coordinated Univ

2020-07-28 10:14:40 1343

转载 详解C++11智能指针

详解C++11智能指针目录详解C++11智能指针前言C++11智能指针介绍为什么要使用智能指针auto_ptrunique_ptrshared_ptrweak_ptr前言有些c++特性并没有带来实际上性能的提升,而且还要花很多的时间来学习,导致我一段时间并不看好智能指针,因为普通指针用的很习惯了。但是看到越来越多的人在使用这个特性时,你没有理由不去学习它,掌握它。 这篇博文来自:https://www.cnblogs.com/WindSun/p/11444429.html,基本

2020-07-23 20:10:18 233

转载 基础用法

pair make pair 用法pair简单讲就是将两个数据整合成一个数据 本质上是有first, second两个成员变量的结构体用法extern void test_pair() { // pair两种构造的方法 // 方法1 std::pair<std::string, double>("This is a StringTest0....

2019-12-11 16:35:58 137 1

原创 1.二维数组中的查找

1.二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行...

2019-11-27 16:28:12 127

原创 重建二叉树

4. 重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路前序遍历:先访问根结点,再访问左子结点,最后访问右子结点。中序遍历:先访问左子结点,再访问根结点,最后访问右子结点。可以发现...

2019-11-27 16:28:03 140 1

原创 3.从尾到头打印链表

3.从尾到头打印链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路常规: 考虑把链表的结点指针反转,改变方向从而可以从尾到头输出,但是会改变链表的结构,不可行。优化: 原则上,,我们不希望修改原链表的结构。我们可以使用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,给一个新的链表结构,这样链表就实现...

2019-11-27 16:27:52 84

原创 2.替换空格

2.替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路暴力法: 从头到尾扫描,遇到空格就替换,并将空格之后的所有字符都后移两个字节。时间复杂度o(n^2).优化:先遍历一遍字符串,这样就可以统计出字符串空格的总数,并可以由此计算出替换之后的字符串的总长度。每替...

2019-11-27 16:26:59 100

原创 5.用两个栈实现队列

5.用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路创建两个栈stack1和stack2,使用两个“先进后出”的栈实现一个“先进先出”的队列。流程示意图如下:具体思路:当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。如果stack2为空时,我们把stack1中的元素逐个弹出并压入sta...

2019-11-27 16:26:43 111

原创 6. 旋转数组的最小数字

6. 旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路将发现,旋转之后的数组实际上可以划分为两个排序的字数组,而且前面的字数组的元素...

2019-11-27 16:26:30 113

原创 Leetcode 82.删除排序链表中的重复元素

题目描述思路1删除重复结点,只需要记录当前结点前的最晚访问过的不重复结点pPre、当前结点pCur、指向当前结点后面的结点pNext的三个指针即可。如果当前节点和它后面的几个结点数值相同,那么这些结点都要被剔除,然后更新pPre和pCur;如果不相同,则直接更新pPre和pCur。需要考虑的是,如果第一个结点是重复结点我们该怎么办?这里我们分别处理一下就好,如果第一个结点是重复结点,那么就把...

2019-11-27 15:08:00 109

原创 Leetcode 328.奇偶链表

题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5-&gt...

2019-11-26 16:09:22 110

原创 20.包含min函数的栈

20. 包含min函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路使用两个stack,一个为数据栈,另一个为辅助栈。数据栈用于存储所有数据,辅助栈用于存储最小值。例子:举个例子:入栈的时候:首先往空的数据栈里压入数字3,显然现在3是最小值,我们也把最小值压入辅助栈。接下来往数据栈里压入数字4。由于4大于之前的最...

2019-11-20 15:58:37 140

原创 19. 顺时针打印矩阵

19. 顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路将结果存入vector数组,从左到右,再从上到下,再从右到左,最后从下到上遍历。代码...

2019-11-20 15:37:56 129

原创 从上到下打印二叉树

22. 从上到下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路考虑使用队列,:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都打印出来为止。代码实现class Solution {public: vector<int&...

2019-11-20 15:30:18 144

原创 21. 栈的压入、弹出序列

21. 栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,...

2019-11-20 15:22:01 122

原创 18.二叉树的镜像

18.二叉树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树8/ 6 10/ \ / 5 7 9 11镜像二叉树8/ 10 6/ \ / 11 9 7 5思路以这两个二叉树为例子,先交换根节点的两个子节点,我们注意到值为10、6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。做完两次交换...

2019-11-20 15:18:15 128

原创 17.树的子结构

17.树的子结构题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路关键在于在树A中查找 和树B结构一样的子树。分两步走:1. 在树A中找到与树B的根结点的值一样的结点R;2.在判断树A中以R为根节点的子树是不是包含和树B一样的结构。递归实现即可。代码实现/*struct TreeNode { int val; struct ...

2019-11-20 14:54:46 98

原创 16. 合并两个排序的链表

16. 合并两个排序的链表题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路两个指针都是拍苏浩的, 我们只需要从头遍历链表,判断当前指针,那个链表中的当前值最小,我们就赋给合并链表指针即可,递归实现。特殊情况: 如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到...

2019-11-20 14:43:06 167

原创 15.反转链表

15.反转链表题目描述输入一个链表,反转链表后,输出新链表的表头。思路考虑使用三个节点,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。在遍历的时候,做当前结点的尾结点和前一个结点的替换。代码实现/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU...

2019-11-19 16:23:17 103

原创 14.链表中倒数第k个结点

14.链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。思路考虑定义双指针,开始都指向 链表头。然后,第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。代码实现/*s...

2019-11-19 16:15:48 192 1

原创 13.调整数组顺序使奇数位于偶数前面

13.调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路创建双向队列,遍历数组,奇数前插入,偶数后插入。最后使用assign方法实现不同容器但相容的类型赋值。代码实现//// Created by Apaul on 2019/...

2019-11-19 16:09:57 81

原创 12.数值的整数次方

12.数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路当指数为负数的时候,可以先对指数求绝对值,然后算出次方的结果之后再取倒数。如果底数为0,则直接返回0。此时的次方在数学上是没有意义的。除此之外,我们要注意:由于计算机表示小数(包括float和double型小数)都有误差,我们不能直接用等号(==)...

2019-11-19 16:00:46 152

原创 11.二进制中1的个数

11.二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路对于一个整数,如果其不为零,那么其二进制表达中至少有一位是1.。 如果 将这个是减去1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边...

2019-11-19 15:37:49 357

原创 10.矩形覆盖

10.矩形覆盖题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路利用二叉树解析,发现仍然负荷Fib数列。其中,f(1) =1,f(2) =2。代码实现class Solution {public: int rectCover(int number) { if ( numbe...

2019-11-19 11:34:29 99

原创 9.变态跳台阶

9.变态跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路当n=1时,结果为1;当n=2时,结果为2;当n=3时,结果为4;归纳法可得跳法f(n)=2^(n-1)。代码实现class Solution {public: int jumpFloorII(int number) { if ...

2019-11-19 11:23:02 123

原创 8.跳台阶

8.跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次只跳一级,剩下n-1阶,跳法f(n-1). 第一次跳2级,剩下n-2阶,跳法f(n-2)。 f(n)=f(n-1)+f(n-2), Fib数列代码实现//青蛙跳台阶//青...

2019-11-19 11:19:51 105

原创 7.斐波那契数列

7.斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路常规: 基于递归来实现可以发现 在这棵树中有很多结点是重复的,而且重复的结点数会随着n的增加而急剧增加,这意味计算量会随着n的增加而急剧增大。事实上,递归方法计算的时间复杂度是以n的指数的方式递增的。所以,使用简单的循环方法来实现。代码实...

2019-11-19 11:11:31 383

非线性系统 Hassan+K.+Khalil

美国密歇根州立大学电气与计算机工程系University Distinguished教授。1989年由于其在“奇异扰动理论及其在控制中的应用”方面的成就被选为IEEE会士。多年来一直从事非线性系统的教学和研究工作,主要研究方向包括非线性(鲁棒和自适应)控制、 奇异扰动理论和电驱动控制。本书第二版曾于2002年获国际自动控制联合会(IFAC)授予的控制工程教材奖。

2018-10-30

空空如也

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

TA关注的人

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