自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2017.03.04 C/C++小知识点

1. struct成员类型不可以是它自己,因为会递归定义,理论上导致结构体的大小不能被计算。但是成员可以定义为该结构体的指针或引用。2. sizeof('0')在C语言里,存放的是字符的ASCALL码(整型数据),结果为4,在C++中,‘0’为字符常量,类型为char,结果为1.3. 数组初始化规则:如果制定了数组维数,那么初始化列表提供的元素个数不能超过维数值。如果维数大于列出的元素初始

2017-03-04 23:01:43 383

原创 2017.03.03 C/C++小知识点

1. int arr(5)  表明声明一个变量arr,其初始值为5.2. C++里面的函数可以嵌套调用,但不可以嵌套定义。3. x86的机器上是小端存出。4. 全局对象的生命周期跨越这个程序运行期间,在main函数调用之前创建,在main函数结束之后,程序结束之前析构。5. (int &) a告诉编译器将a当成int对待(不做任何转换)。将a里面存储的值当成int类型的值。6.

2017-03-03 22:56:47 361

原创 2017.03.02 C/C++小知识点

1. read是Unix系统的库函数,而fread才是C中的库函数。read属于系统调用,从打开的设备或文件中读取数据。2. int a=1,b=32. 当执行a3. ifndef/define/endif 的含义:如果未定义/那么定义/完成假设 一般是用来防止头文件被重复包含,提高编译效率的。4. 字符'\0'的ASCALL码值为05. 结构和联合都是有多个不同的数据类型成员组成

2017-03-02 23:23:27 381

原创 2017.02.29 C/C++小知识点

1. 函数重载: 指的是在同一作用域内,可以有一组相同函数名,不同参数列表的函数,这组函数被称为重载函数。通常用来命名一组功能相似的函数,减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处,方便用户使用。2.main函数中如果无return,编译器会自动添加 return 0;3. math.h中的abs函数的返回值:当num为最小负数时,abs(num)依然返回该最小

2017-03-01 22:09:33 423

原创 2017.02.28 C/C++小知识点

1.赋值语句的返回值是所赋的值。所以在C/C++中才会有如下的连续赋值语句 a=b=10  即b=10这个赋值语句的返回值是10.2.在32位机器上,int类型占4个字节,枚举类型同int类型,占4个字节。typedef只是一个声明,不占空间。空函数不占空间。3.在结构struct中,各成员有个字的内存空间,一个结构变量的总长度是各成员长度之和。而在联合体union中,各成员共享一段内存空

2017-02-28 23:17:12 287

原创 【LeetCode-154】Find Minimum in Rotated Sorted Array II(C++)

题目要求:找出已排序的旋转数组中的最小值,数组中可能存在重复的数。问题解答:这道题剑指offer上面有讲,用二分查找算法来做,如果index1,index2,mid指向的值相等,则不能判断mid指向的值是属于前面的递增部分还是后面的递增部分。因此需要用顺序查找来做,所以如果数组中有重复元素,则时间复杂度会由O(logn)变为O(n)。class Solution {public:

2016-12-21 10:44:19 267

原创 【LeetCode-229】Majority Element II(C++)

题目要求:给出一个长度为n的数组,找出数组中所有出现次数大于n/3的元素。要求时间复杂度为O(n),空间复杂度为O(1)。问题解答:1.时间复杂度为O(n),空间复杂度为O(n)。用STL中的map,将数组中各个元素出现的个数存起来。代码很简单,但是空间复杂度不满足要求。class Solution {public: vector majorityElement(vector

2016-12-21 10:03:23 356

原创 【LeetCode-228】Summary Ranges(C++)

题目要求:给出一个已经排好序的整型数组,然后将这个数组中连续的整数转化为区间形式,[0,1,2,4,5,7]---> ["0->2","4->5","7"]问题解答:只需要遍历一次数组即可。class Solution {public: vector summaryRanges(vector& nums) { int n=nums.size();

2016-12-20 21:13:27 317

原创 【LeetCode-120】Triangle(C++)

题目要求:给出一个三角形的二维数组,即第一行有一个元素,第二行有两个元素……求出从上到下的最短路径。从上到下选择数组元素的时候只能选择相邻的两个元素。问题解答:动态规划算法,采用自底向上的方法.假设用nums二维数组来存储从上到下面每一个元素的最短路径,则nums[i][j]=min(nums[i-1][j-1],nums[i-1][j])+triangle[i][j]。为了使空间复杂度降到O

2016-12-20 18:33:05 724

原创 【LeetCode-442】Find All Duplicates in an Array(C++)(

题目要求:给出一个整型数组nums,长度为n,则数组中的元素在1~n之间,有些元素出现了两次,有些元素出现了1次,找出那些出现了两次的数。问题解答:1. 时间复杂度为O(n),空间复杂度为O(n)的解法。利用一个长度为n的数组temp,初始化为0,遍历数组nums[i],判断temp[nums[i]-1]是否为0,如果是,则说明nums[i]第一次出现,将temp[nums[i]-1]置为

2016-12-20 16:10:51 313

原创 【LeetCode-209】Minimum Size Subarray Sum(C++)

题目要求:给出一个数组nums和一个正整数s,求nums的子数组中和大于s的长度最小的子数组的长度。问题解答:用两个指针,left和right,从left位置开始的和大于s的子数组的长度。然后把这个长度存起来,left++。在找到以left位置开始的和大于s的子数组的长度,和之前存起来的长度相比较,取最小值。一直到right指向最后一个位置的后一个位置,且sumclass Solution

2016-12-20 11:22:08 340

原创 【LeetCode-448】 Find All Numbers Disappeared in an Array(C++)

题目要求:给出一个整形数组,长度为n,数组中的整数都在1~n之间,有些数出现一次,有些数出现两次,求出那些没出现的数的集合。问题解答:1.时间复杂度为O(n),空间复杂度为O(n)的做法。定义一个长度为n的数组temp,全都初始化为0。然后遍历给出的数组,令temp[nums[i]-1]=-1。最后遍历数组temp,那些值为0的数的位置加上1就是所要求的没有出现的数。class Sol

2016-12-20 09:47:13 2358 1

原创 【LeetCode-414】Third Maximum Number(C++)

题目要求:找到一个数组中的第三大的不重复的数,如果第三大的数不存在就返回最大数。问题解答:用了STL中的set容器,利用了set的去重和自动排序功能。class Solution {public: int thirdMax(vector& nums) { int l=nums.size(); set> s;//使s按照从大到小的顺序排列

2016-12-19 22:43:16 413

原创 [CFF认证]201612-3炉石传说(C++)

问题描述试题编号:201612-3试题名称:炉石传说时间限制:1.0s内存限制:256.0MB问题描述:问题描述  《炉石传说:魔兽英雄传》(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集换式卡牌游戏(如下图所示)

2016-12-14 17:18:59 894

原创 [CFF认证]201604-3路径解析(C++)

答案:这道题真是浪费了我好长时间,主要是对相对路径的处理(就是以..开头的路径)没有处理好,导致程序在处理相对路径的时候就会超时,后来在网上看了别人的解决方法才发现可以将相对路径转化为绝对路径,即当输入的字符串的第一位不为'/’时,就将当前路径加到相对路径上,这样就不会超时了。程序1:用string来做#include #include #include using namespac

2016-12-14 11:22:07 676

原创 [CFF认证]201512-3画图(C++)

问题描述试题编号:201512-3试题名称:画图时间限制:1.0s内存限制:256.0MB问题描述:问题描述  用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。

2016-12-09 15:54:10 476

原创 [CFF认证]201509-3模板生成系统(C++)

问题描述试题编号:201509-3试题名称:模板生成系统时间限制:1.0s内存限制:256.0MB问题描述:问题描述  成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom

2016-12-09 10:06:20 450 1

原创 [CFF认证]201412-3集合竞价(C++)

问题描述试题编号:201412-3试题名称:集合竞价时间限制:1.0s内存限制:256.0MB问题描述:问题描述  某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。  该程序的输入由很多行构成,每一行为一条记录,记录可能

2016-12-08 15:40:29 1178

原创 [CFF认证]201503-3节日(C++)

问题描述试题编号:201503-3试题名称:节日时间限制:1.0s内存限制:256.0MB问题描述:问题描述  有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。  现在,给你a,b,c和y1,

2016-12-07 22:22:35 835

原创 [CFF认证]201409-3字符串匹配(C++)

问题描述试题编号:201409-3试题名称:字符串匹配时间限制:1.0s内存限制:256.0MB问题描述:问题描述  给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;

2016-12-07 18:00:20 412

原创 [CFF认证]201403-3命令行选项(C++)

问题描述试题编号:201403-3试题名称:命令行选项时间限制:1.0s内存限制:256.0MB问题描述:问题描述  请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行

2016-12-07 16:42:10 769

原创 [CFF认证]201312-3最大的矩形(C++)

问题描述试题编号:201312-3试题名称:最大的矩形时间限制:1.0s内存限制:256.0MB问题描述:问题描述  在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度

2016-12-07 10:44:24 716 1

原创 Python练习

1. print repr(u'中国')  的运行结果是什么?解:u'\u4e2d\u56fd'2. 什么是lambda函数?并列举一个使用lambda函数的例子解:lambda是python中快速定义单行函数的一种方式,lambda需要一个参数,后面仅跟单个表达式作为函数体(注意只能跟单个表达式,即使是print语句也不能用在lambda形式中,后面只能跟单个表达式)

2016-11-02 21:17:15 879

原创 [算法导论]2.2节编程练习C++实现

2.2节重点描述评估算法性能的工具—时间复杂度。练习:2.2-3 选择排序算法的实现。由于选择排序在最好情况的输入下也要将数组中的值全部都比较一遍,所以其在最好情况和最坏情况下的时间复杂度均为n^2。#include #include #include using namespace std;vector select(vector& A){ int len = A.size

2016-09-24 16:45:31 310

原创 [算法导论]2.1节编程练习C++实现

文章中的伪代码的C++实现:1.INSERTION-SORT(A)插入排序(非降序排序)#include #include #include using namespace std;vector insertion(vector& A){ int length = A.size(); for (int j = 1; j < length; j++){ int key = A

2016-09-24 15:06:13 290

原创 【LeetCode-260】Single Number(C++)

题目要求:给出一个数组,这个数组中只有两个数是只有一个的,其余的数都有两个。如 num=[1,2,1,3,2,5],要求返回这两个不重复的数,返回[3,5]。解题方法:1. 一开始想到的方法就是用C++中的STL容器set。循环判断数组中的数,如果set中不存在这个数,就将这个数存到set中,如果set中已经存在,就将这个数删掉。当循环完后,set中将会只剩下不重复的两个数。class

2016-09-18 22:57:32 282

原创 【LeetCode-338】Counting Bits(C++)

题目要求:给出一个非负整数num,求出0-num范围内的(num+1)个整数,每个整数的二进制表达中1的位数。Follow Up:时间复杂度为O(n*sizeof(integer))的解法很简单,要求实现时间复杂度为O(n)的算法。解题方法:1. 时间复杂度为O(n*sizeof(integer))的算法。程序如下,一共有n+1个数,每个数都要一位一位的判断是否为1,所以时间复杂度为O(n

2016-09-18 21:09:58 474

原创 【LeetCode-145】Binary Tree Postorder Traversal(C++)

题目要求:完成二叉树的后序遍历(递归的方式很简单,请尝试用循环的方式来完成)解决方法:1.递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x

2016-09-17 17:20:04 391

原创 【LeetCode-94】Binary Tree Inorder Traversal(C++)

题目要求:完成二叉树的中序遍历。解题方法:1.递归。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL

2016-09-17 15:55:47 430

原创 【LeetCode-144】Binary Tree Preorder Traversal(C++)

题目要求:完成二叉树的前序遍历。解题方法:1.递归的方法。很简单。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), le

2016-09-17 15:33:42 278

原创 【LeetCode-111】Minimum Depth of Binary Tree(C++)

题目要求:给出一棵树,求出这棵树的最小深度,最小深度的意思是从该棵树的根节点到叶子节点的最短路径上的节点个数。解题方法:相当于树的层序遍历,用两个队列来实现树中层次的划分,每遍历完一层,并且遍历的时候没有遇到叶子节点,就把深度值加一。只要遍历的过程中遇到了叶子节点,就返回深度值。/** * Definition for a binary tree node. * struct Tree

2016-09-17 12:27:17 318

原创 【LeetCode-257】Binary Tree Paths(C++)

题目要求:要求输出一个二叉树的所有从根节点到叶子节点的路径。解题方法:1. 可以用递归的方法实现,将根节点的左右子树所输出的两个数组合并为一个数组,并将得到的数组的每一个string元素头部加上"to_string(root->va)->l",其中to_string()是C++中的一个可以将int型转换为string类型的函数。/** * Definition for a binar

2016-09-17 11:46:55 660

原创 【LeetCode-107】Binary Tree Level Order Traversal II(C++)

题目要求;这道题的要求与102题 Binary Tree Level Order Traversal的要求差不多,这不过102的题目要求输出的数组中的节点顺序是由根节点到叶子节点,而本题要求的顺序是由叶子节点到根节点。解题方法:基本思路与102题一样,用两个队列来实现节点的层次之间的分离,与102题不同的是增加了一个栈来对顺序进行反转。/** * Definition for a bin

2016-09-16 20:22:46 295

原创 【LeetCode-102】Binary Tree Level Order Traversal(C++)

题目要求:二叉树的层序遍历,给出一棵树,返回一个存储着数组的数组v,每个层的节点组成一个数组,所有层的节点数组组成v。解题方法:用两个队列来实现,一个队列用来存储上一层的节点,另一个队列用来存储下一层的节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo

2016-09-16 20:17:33 274

原创 二叉树的前序、中序、后序三种遍历的六种实现方式(递归、非递归)(C++)

实现语言:C++存储方式:链式存储struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL);}一、前序遍历前序遍历方式:根左右递归实现:递归实现的方式代码一般比较简单快捷。voi

2016-09-14 15:26:50 13006 5

原创 【LeetCode-19】Remove Nth Node From End of List(C++)

题目要求:给出一个单链表,要求删除该单链表中从后面数的第n个节点。解决方法:首先遍历链表,得到链表中的节点个数num。则num-n+1就是从头开始数的需要删除的节点位置。然后再从头开始遍历到第num-n个节点p2,用p2->next=p2->next->next;删除掉第num-n+1个节点。/** * Definition for singly-linked list. * stru

2016-09-10 11:41:12 273

原创 【LeetCode-205】Isomorphic Strings(C++)

题目要求:判断两个字符串的模式相同,及用一个字符串中的字符替换相同位置的第二个字符串中的字符,得到的字符串与第一个字符串相同。解题方法:这道题要求映射唯一,及对于字符串s中的字符,在t中仅有一个相同位置的字符与其相对应。同样对于t中的字符,在s中也仅有一个相同位置的字符与其相对应。故用两个map来保证这种对应的唯一性。class Solution {public: bool is

2016-09-09 22:40:50 728

原创 【LeetCode-374】Guess Number Higher or Lower(C++)

题目要求:猜数字,如果猜对了guess函数会返回0,如果没有猜对guess函数会告诉你猜大了还是猜小了。直到你猜出这个数并返回。解题方法:典型的二分查找。有一个点需要注意:取中间数的时候一定要这么取: int g=l+(h-l)/2; 因为如果写成 int g=(l+h)/2;会因为(l+h)计算值太大了超过了int的表达范围产生溢出。// Forward declaration of

2016-09-09 11:52:21 419

原创 【LeetCode-112】Path Sum(C++)

题目要求:判断一棵二叉树中是否存在一个从根到叶子的路径,使得这条路径上所有数之和为给定的值sum。解题思路:很简单的递归实现。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2016-09-08 11:45:06 372

原创 【LeetCode-119】 Pascal's Triangle II(C++)

题目要求:返回杨辉三角的第k行。解题方法:1.第一种方法就是根据杨辉三角的构成方式,每一行的元素等于上一行元素的左右两个数之和,然后将每一行都算出来循环计算。class Solution {public: vector getRow(int rowIndex) { vector result(rowIndex+1,1); if(rowIndex

2016-09-08 11:34:45 950

空空如也

空空如也

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

TA关注的人

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