- 博客(37)
- 收藏
- 关注
原创 入门级算法练手--数组--从排序数组中删除重复项、买卖股票的最佳时机 II (每日两题2019-09-20)
1、从排序数组中删除重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新...
2019-09-21 19:08:37
277
原创 入门级算法练手--字符串--回文串、字符串转换整数 (atoi)(每日两题2019-09-20)
1、实现strStr实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaa...
2019-09-20 15:35:39
297
原创 入门级算法练手--字符串--回文串、字符串转换整数 (atoi)(每日两题2019-09-19)
1、回文串判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: truebool isPalindrome(int x){ if(x<0)return false; int temp=x; long ret=0; while(temp){ ...
2019-09-20 14:03:59
296
原创 入门级算法练手--字符串--验证回文串、(每日两题2019-09-18)
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明
2019-09-18 12:50:22
390
原创 入门级算法练手--字符串--字符串中的第一个唯一字符、找不同(每日两题2019-09-17)
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
2019-09-17 20:29:13
277
原创 入门级算法练手--字符串--整数反转、反转字符串(每日两题2019-09-10)
1、整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231,231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。in...
2019-09-10 21:03:32
395
原创 计算机算法设计与分析(第五版)---王晓冬--------前六章(递归与分治,动态规划,贪心算法,回溯法,)期末复习资料总结
--1-- 算法:解决问题的一种方法或者一个求解过程 是若干指令的序列输入 输出 有限性 确定性程序:用某种设计语言对算法的具体实现 可以不满足 有限性程序 = 算法+数据结构果子合并问题(动态规划)、百钱百鸡(限制循环次数,两重循环)、货郎担问题(穷举不行)算法复杂性:体现在运行该算法所需要的计算机资源的多少最重要资源:时间、空间 时间复杂性、空间复杂性影响...
2019-07-04 10:48:45
5107
1
原创 C++入门笔记--继承机制中的构造器和析构器
正如前面的博客里写的,C++支持程序员写出在创建或者销毁一个对象时自动调用的方法,也就是构造器和析构器。在没有继承机制的情况下,我们很容易理解这些方法在创建或销毁一个对象的时候被调用,但是一旦使用了继承机制,构造器和析构器就变得有点复杂了。构造器比如有个基类Animal(),他将在创建子类Pig类型的对象的时候最先被调用,如果Pig类也有一个构造器,他将排在第二个被调用,因为有一个原则:基...
2018-12-25 20:55:27
422
原创 数据结构--C语言--排序算法的实现--插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序
排序算法的实现(必做,验证性实验,4学时)实验目的熟悉排序的方法、过程及原则。掌握插入排序、快速排序、选择排序、归并排序的算法思想及实现方法,掌握其时间复杂度的分析方法。实验内容定义待排序序列的存储结构。验证插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序中各排序方法中的一、二个排序算法。插入类排序:直接插入排序、希尔排序 交换类排序:冒泡排序、快速排序 ...
2018-12-25 19:53:12
1758
原创 C++入门笔记--神秘的家伙--this关键字的使用+继承
this 在对象的世界里,有一个特殊的指针,他叫做this,我们从来都没有见过他,但是他却从来都存在。我们用一个简单的例子来认识他。#include<iostream>class Human{//类名public: std::string name;//名字 Human(std::string name); //定义一个带参的构造函数 };Human::Hu...
2018-12-24 12:49:31
499
原创 数据结构--C语言--查找算法的实现--顺序表的查找
1.实验目的熟练掌握顺序表和有序表的查找方法,掌握其时间复杂度的分析方法2.实验内容(1)验证并设计顺序表的查找(顺序查找、折半查找)算法(2)验证二叉排序树上的查找(创建、查找、插入)算法(3)验证Hash表查找(Hash函数定义、建立,查找,插入)算法//顺序表的顺序查找 折半查找 二叉排序树 以数值型关键字为例 #include<stdio.h>...
2018-12-24 10:42:23
4045
原创 C++入门笔记---定义构造器(构造函数)和析构器
回顾一下OOP技术的基础:-定义一个有属性和方法的类(模板)-为该类创建一个变量(实现)但是面向对象过程可不只有这么简单,接下来我们更深一步的了解他。1.构造函数(构造器)首先就是构造器,他也是一种方法,并且每个类至少有一个构造器,如果在创建类的时候没有定义构造器的话,编译器会默认生成一个无参数的构造器,这个构造函数的作用是对实例化的对象进行初始化,构造器和通用的方法的区别:...
2018-12-19 12:06:58
727
原创 C++入门笔记--对象
类(Class)是一个模型,当我们创建实例的时候,也就是对象本身。可以理解成,类是一个设计蓝图,决定了一个对象将是什么样的(具备什么样的功能,属性)而对象是类的一个实例化。OOP过程(面向对象的过程)的第一步是先创建一个类,而每个类跟变量一样都有一个名字,所以我们就从如何声明一个类开始说起:class Mynote{};//分号不要忘记 可以联想到结构体的声明 虽然很类似 但差别还...
2018-12-18 22:48:10
208
原创 C++入门笔记--复杂的数据类型--数组和getline()函数
学习完复杂的数据类型的设计思路和使用习惯,就开始面向对象的学习。1.数组数组是许多程序设计语言的重要组成部分,尤其是在C语言程序里会经常碰到他们。数组的优点在于,一个数组可以把多个同类型的值存储在同一变量名下,需要被声明为一种特定的类型。type name[length].下面用C++实现一个试用数组的任务,并谈谈在使用中有哪些地方需要注意。编程任务:定义一个数组容纳十个整数,...
2018-12-17 14:26:28
1066
原创 数据结构--C语言--图的深度优先遍历,广度优先遍历,拓扑排序,用prime算法实现最小生成树,用迪杰斯特拉算法实现关键路径和关键活动的求解,最短路径
实验七 图的深度优先遍历(选做,验证性实验,4学时)实验目的熟悉图的数组表示法和邻接表存储结构,掌握构造有向图、无向图的算法 ,在掌握以上知识的基础上,熟悉图的深度优先遍历算法,并实现。实验内容(1)图的数组表示法定义及基本操作的实现。(2)图的邻接表表示法定义及基本操作的实现。(3)写函数实现图的深度优先遍历(分别在两种结构上)(4)在邻接表上实现拓扑排序、关键路径的求...
2018-12-17 12:35:04
3862
1
原创 C++入门笔记--函数的重载
函数重载的实质就是用同样的名字再定义一个有着不同参数但有着同样用途的函数(类似于人格分裂,多重身份),可以是参数个数的不同,也可以是参数数据类型上的不同例子:用的还是上个笔记里的东西,现在我把主要的转换步骤写在了一个函数里,并且重新定义了一个同名的但是参数类型不同的参数,在main里我两次输入数据,一次是double一次是int,并调用函数这个名字的函数,我们想的是不同的参数类型应该根据参...
2018-12-14 09:33:42
538
原创 C++--输入cin输出cout小结
代码1: //向用户提出一个"Y/N"问题 然后把用户输入的值赋给answer变量//要求 针对用户输入"Y/y"或"N/n"进行过滤//罚决程序可能存在的任何问题 想想为什么#include<iostream>int main(){ char answer; std::cout<<"请问可以格式化您的硬盘吗?[Y/N]"<<
2018-12-07 12:38:33
469
原创 C++---文件I/O,C++里对文件的操作--例子--文件的复制
依然还是从一个程序说起:将一个文件复制到另一个文件C语言来实现:#include<stdio.h>#include<stdlib.h>int main(int argc,char *argv[]){ FILE *in,*out; int ch;//gets()函数的返回值是int型的 if(argc!=3){//如果参数数量不是三个 就输出提示语句 ...
2018-12-03 22:25:55
488
原创 C语言基础下的C++入门---极其绝望的又一次入门,不过这次一定是最后一次入门!!!!!
小程序的入门(一)~~!! #include<iostream>using namespace std;//命名空间 相当于 #include<iostream.h> -->> C92版本 int addArray(int *addArray,int n);int main(){ int data[] = {0,1,2,3,4,5,6,7,...
2018-11-28 21:54:02
1061
原创 数据结构--C语言--已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有值大于mink且小于maxk的元素
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define LEN sizeof(struct LNode) struct LNode{ int data;//数据域 struct LNode *next; };typedef struct LNode LNode,* Li...
2018-11-25 19:02:43
13764
3
原创 数据结构--C语言--逆序建立单链表,遍历单链表,在单链表第5个元素前插入一个值为999的元素,删除单链表第5个元素
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define LEN sizeof(struct LNode)struct LNode{ int data; struct LNode *next;};typedef struct LNode LNode,* LinkList;...
2018-11-25 19:01:14
1553
原创 数据结构--C语言--两个(有序或无序)顺序表的合并
#include<stdio.h>#include<stdlib.h>#define OK 1#define OVERFLOW 0#define LIST_INIT_SIZE 10#define LISTINCREMENT 5typedef struct{ int *elem; int length; int listsize;}Sqlist;...
2018-11-25 18:54:31
8493
1
原创 数据结构--C语言--顺序表元素的逆置
#include<stdio.h>#include<stdlib.h>#define OK 1#define OVERFLOW 0#define LIST_INIT_SIZE 10#define LISTINCREMENT 5typedef struct{ int *elem;//基地址 int length;//顺序表长度 int listsize...
2018-11-25 18:53:22
8303
原创 数据结构--c语言--在非递减有序的顺序表中插入一个元素x,保持顺序表有序性。
实验目的熟悉将算法转换成程序代码的过程,了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C语言描述方法。熟练掌握顺序表的基本操作:查找、插入、删除、合并等,掌握顺序表的随机存取特性。实验内容(1)在非递减有序的顺序表中插入一个元素x,保持顺序表有序性 #include<stdio.h>#include<stdlib.h&g...
2018-11-25 18:51:43
17211
1
原创 C++--引用类型,含有可变参数的函数
引用类型引用是标识符的别名 定义一个引用的时候,必须同时对他初始化,使它指向一个已经存在的对象 例如:其实在定义引用变量ri的时候,ri相当于变量j的别名int i,j;int &ri = i;//定义int引用ri,并初始化为变量i的引用j = 10;ri = j;//相当于i = j一旦一个引用变量被初始化后,就不能改为指向其他对象,相当于二者已经绑定了引用可...
2018-11-25 18:46:56
1188
原创 c++--常量,逗号运算,逻辑运算,关系运算,条件运算,SIZEOF运算,位运算
常量在程序运行的整个过程中其值始终不可改变的量 直接使用符号(文字)表示的值 例如:12,3.5,‘A’都是常量整数常量十进制:若干个0~9的数字,但数字部分不能以0开头,正数前面的正号可以省略 八进制:前导0+若干个0~7的数字 十六进制:前导0x+若干个0~9及A~F的字母(大小写均可) 以文字形式出现的整数 后缀:后缀L(或l)表示类型至少是long,后缀LL(或ll)...
2018-11-21 22:38:22
368
原创 C++--面向对象的基本概念,程序的开发过程
对象(Object):一般意义的对象:是现实世界中一个实际存在的事物; 面向对象方法中的对象:是系统中用来描述客观事物的一个实体抽象与分类:分类所依据的原则--抽象 抽象出同一类对象的共同属性和行为,形成类 类与对象的关系:类型与实例的关系,犹如模具与铸件之间的关系封装:隐蔽对象的内部细节 对外形成一个边界 只保留有限的对外接口 使用方便,安全性好继承:意义在于软...
2018-11-21 19:14:54
374
原创 算术表达式求值-数据结构-C语言
1.实验目的熟练掌握栈的基本操作,深入了解栈的特性,能在实际问题的背景下灵活运用他们,并加深对这种结构的理解。2.实验内容设计一个程序,演示用算符优先法对算术表达式求值的过程。以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教科书表3.1给出的算符优先关系,实现对算术四则运算混合运算表达式的求值,并仿照教科书的例子3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作...
2018-11-20 18:43:16
15865
4
原创 栈和队列的基本操作的实现
1.实验目的熟练掌握栈和队列的抽象数据类型,能在相应的应用问题中正确选用它们,熟练掌握栈和队列的实现方法(顺序和链式),两种存储结构和基本操作的实现算法,注意空和满的判断条件及它们的描述方法,掌握循环队列与其它顺序结构实现上的不同及解决办法,熟悉各种队列的基本操作在循环队列上的实现2.实验内容(1)用栈实现括号匹配的检验(2)用栈实现形如a+b@b+a#的中心对称的字符序列的检...
2018-11-20 18:40:08
1415
1
原创 数据结构实验-C语言-二叉树的创建,前、中、后序遍历的递归算法和非递归算法,求叶子结点数目,求二叉树深度,判断二叉树是否相似,求二叉树左右子树互换,二叉树层序遍历的算法,判断二叉树是否是完全二叉树
1.实验目的熟练掌握二叉树的二叉链表存储结构的C语言实现。掌握二叉树的基本操作-前序、中序、后序遍历二叉树的三种方法。了解非递归遍历过程中“栈”的作用和状态,而且能灵活运用遍历算法实现二叉树的其它操作。2.实验内容(1)二叉树的二叉链表的创建(2)二叉树的前、中、后序遍历的递归算法和非递归算法的实现(3)求二叉树中叶子结点数目的递归算法。(4)编写求二叉树深度的递归算法。...
2018-11-20 18:35:31
3749
2
原创 LINUX入门笔记--权限管理命令--权限管理命令chmod
chmod命令名称:chmod命令英文原意:change the permissions mode of a file命令所在路径/bin/chmod执行权限:所有用户语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录] chmod [mode=421] [文件或目录] -R 递归修改功能描述:改变文件或目...
2018-11-20 13:29:09
295
原创 LINUX入门笔记--文件处理命令--链接命令
ln命令名称:ln命令英文原意:link命令所在路径:/bin/ln执行权限:所有用户语法:ln -s [原文件] [目标文件] -s 创建软链接 如果没有-s这个格式的话生成的就是硬链接功能描述:生成链接文件范例:1. $ ln -s /etc/issue /tmp/issue.soft ...
2018-11-16 21:50:42
317
原创 LINUX入门笔记--文件处理命令--文件处理命令
1.touch命令名称:touch命令所在路径:/bin/touch执行权限:所有用户语法:touch [文件名]功能描述:创建空文件范例:1.touch [文件名],如果在没有指明绝对路径的情况下就默认在当前目录创建该文件,但是如果指明绝对路径的话就是在指定路径下创建。如图,我先用cd命令进入到/tmp下,然后直接touch a.list(第二行),并未直接指明它的绝...
2018-11-12 22:51:28
277
原创 LINUX入门笔记--文件处理命令--目录处理命令(续)
1.mv命令名称:mv命令英文原意:move命令所在路径:/bin/mv执行权限:所有用户语法:mv [源文件或目录名] [目标目录]功能描述:剪切文件,改名范例:1.剪切文件时,是不需要选项的,直接用mv即可了。如图,我在临时目录/tmp下用mkdir递归创建了/a1/b1和/a2/b2目录(第一行),查看a2下的目录(第二,三行)发现只有b2,然后mv /tmp...
2018-11-08 17:54:43
188
原创 LINUX入门笔记--文件处理命令--目录处理命令
目录处理命令1.mkdir命令名称:mkdir命令英文原意:make directories命令所在路径:/bin/mkdir执行权限:所有用户语法:mkdir -p[目录名]功能描述:创建新项目 -p是递归创建范例:如下图 1.$mkdir /tmp/fz:由ls查看后可见到在最后一行,在临时目录下成功创建了fz这个目录 ...
2018-11-07 21:59:15
351
原创 Linux入门笔记--文件处理命令--命令格式与目录处理命令ls
命令格式命令格式:命令[-选项][参数] 可以将选项理解为用来调整操作的功能,参数理解为操作的对象,可能是用户,进程或者文件 例如: ls -la /etc 说明:①个别命令使用不遵循此规则。选项和命令用中括号括起来说明可有可没有,例如:如图ls在没有选项和参数时也可以执行 ②当有多个选项时,可以写在一起。如:ls -la /etc 里就把-...
2018-11-06 23:10:42
292
原创 LINUX入门笔记--初学者应该注意的东西
1.学习Linux的注意事项Linux下严格区分大小写与Windows不同的是在Windows下DOS命令和文件命名都不区分大小写,但在Linux下严格区分大小写。不光命令区分大小写,文件命名和选项等等许多地方也严格区分大小写。 Linux是没有大写的命令的,全是小写,后面会有环境变量,这个是习惯用大写的。Linux中所有的内容以文件形式保存,包括硬件。在Linux里如果想要内容永久生...
2018-11-06 21:31:06
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人