自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer 连续子数组的最大和(C++)

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,−3,−2,7,−15,1,2,2}\{6,-3,-2,7,-15,1,2,2\}{6,−3,−2,7,−15,1,2,2},...

2020-03-31 23:25:54 164

原创 剑指offer 整数中1出现的次数(从1到n整数中1出现的次数)(C++)

题目描述求出1 131~131 13的整数中111出现的次数,并算出100 1300100~1300100 1300的整数中1出现的次数?为此他特别数了一下1 131~131 13中包含1的数字有1、10、11、12、131、10、11、12、131、10、11、12、13因此共出现666次,但是对于后面问题他就没辙了。ACMer希望你...

2020-03-31 21:49:48 166

原创 剑指offer 数组中出现次数超过一半的数字(C++)

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思想数组为空时,返回0。数组中只有一个元素时,返回该元素。使用C++中泛型算法count来解答此题。int numcount = count(numbers.be...

2020-03-31 19:22:21 172

原创 剑指offer 最小的K个数(C++)

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解题思路定义如果给出的数组不空,则一个函数对该数组元素从小到大排序,返回一个新的数组。如果返回的数组不空,且给出的参数k符合条件,则定义一个函数,返回一个装有该数组前k个元素的数组。代码实现class Solution {public: vec...

2020-03-31 18:22:47 169

原创 剑指offer 二叉树中和为某一值的路径(C++)

题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路设计一个函数,用vector存储根结点到各个叶子结点的路径,对每个路径进行判断,等于expectNumber,存入到二维vector中。设计一个函数,对每个一维数组中的元素...

2020-03-31 17:48:31 168

原创 剑指offer 二叉树的下一个结点(C++)

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路定义一个寻找根结点的函数,找到根结点,如果pNode本身为根结点,直接返回。定义一个中序遍历函数,并用vector容器存储二叉树中序遍历序列。找到容易中和pNode匹配的结点,返回结点的下一个结点即可。结点为空返回空,pNode在vect...

2020-03-31 14:18:35 177

原创 剑指offer 序列化二叉树(C++)(加强对引用(reference)的理解)

题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到...

2020-03-30 19:13:31 200

原创 剑指offer 把二叉树打印成多行(C++)

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路和上一篇博文思路完全一致,这道题目不用做成之字形的,相对简单。代码实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...

2020-03-28 23:41:58 172

原创 剑指offer 按之字形顺序打印二叉树(C++)

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路本题目就是二叉树层序遍历的变形,在程序主题中可以定义一个queue队列数据结构来方便二叉树的遍历。本题目返回一个动态二维数组即vector<<vector>int >类型,思路可以是定义一个一维数组v...

2020-03-28 23:34:26 248

原创 机器学习概述

一、引言机器学习的广义定义为通过使用经验(experience)来提高性能和做精准预测的计算方法。-你好你好你好你好[是的]sequenceDiagram张三 ->> 李四: 你好!李四, 最近怎么样?李四-->>王五: 你最近怎么样,王五?李四--x 张三: 我很好,谢谢!李四-x 王五: 我很好,谢谢!Note right o...

2020-03-28 16:55:11 659 1

原创 剑指offer 二叉搜索树与双向链表(C++)

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路中序遍历二叉搜索树可得到一个排序序列,将其放到vector容器中,通过数组下标的循环来修改每个结点指针的指向即可。代码实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNo...

2020-03-27 17:15:09 166

原创 剑指offer 平衡二叉树(C++)

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

2020-03-27 12:08:30 195

原创 剑指offer 对称的二叉树(C++)

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解题思路首先说一下做这道题目最初的错误想法:想到了二叉树的中序遍历,中序遍历序列对称则二叉树对称,于是写好了程序,系统报错,给出了{5,5,5,5,#,#,5,#,5}\left\{5,5,5,5,\#,\#,5,\#,5\right\}{5,5,5,5,#,#,5,#,5...

2020-03-26 23:36:16 155

原创 剑指offer 二叉搜索树的第k个结点(C++)(在低级错误的Debug中拯救自我)

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)(5,3,7,2,4,6,8)(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为444。解题思路线索二叉树就是二叉排序树,通过二叉树的中序遍历可得到从小到大的序列,在k满足范围的同时,返回数组下标为k - 1的数值即可。代码实现/*struct TreeNode { ...

2020-03-26 23:17:34 147

原创 剑指offer 二叉搜索树的后序遍历序列(C++)(四种解法)

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路1、二叉搜索树 又叫 二叉排序树,是一个递归的树型结构:如果根结点为空,返回false;根结点的左孩子结点值小于根结点,根结点右孩子结点值大于根结点。根结点的左右子树分别满足上述条件。中序遍历二叉搜索树可得到递增的序列。2、判断一...

2020-03-26 18:21:04 307

原创 剑指offer 栈的压入、弹出序列(C++)

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,51,2,3,4,51,2,3,4,5是某栈的压入顺序,序列4,5,3,2,14,5,3,2,14,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,24,3,5,1,24,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个...

2020-03-25 22:59:46 152

原创 剑指offer 丑数(C++)3种方法(一层一层的剥开它的心)

题目描述把只包含质因子2、32、32、3和555的数称作丑数(Ugly Number)。例如6、86、86、8都是丑数,但141414不是,因为它包含质因子777。 习惯上我们把111当做是第一个丑数。求按从小到大的顺序的第NNN个丑数。解题思路我首先想到的是逆向思维方法:递归方法,写出来后是正确的,由于运行时间比较长,OJ报错;其次使用循环,依旧是运行时间过长,OJ报错。如果给出的inde...

2020-03-24 12:09:47 338

原创 数据结构 队列(C)

1、队列的头文件和函数声明#ifndef SEQQUEUE_H#define SEQQUEUE_H#define MAX_SIZE 1024// 顺序队列结构体typedef struct SEQQUEUE { void* data[MAX_SIZE]; int size;}SeqQueue;// 初始化SeqQueue* Init_SeqQueue();// 入队...

2020-03-23 17:08:28 321

原创 数据结构 顺序栈和链栈的操作实现(C)

顺序栈的操作实现1、顺序栈的头文件定义和函数声明#ifndef SEQSTACK_H#define SEQSTACK_H//数组模拟栈的存储#define MAX_SIZE 1024#define SEQSTACK_TRUE 1#define SEQSTACK_FALSE 0typedef struct SEQSTACK{ void* data[MAX_SIZE]; i...

2020-03-23 17:06:38 496

原创 剑指offer 包含min函数的栈(C++)

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。解题思路由于系统在栈空时不会调用类中的某些函数,所以无需对下列函数进行判空操作。代码实现class Solution {public: void push(int value) {...

2020-03-23 17:01:37 154

原创 剑指offer 顺时针打印矩阵(C++)

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.解题思路画图找好循环中的截止条件,数组下标的范围即可,方法有很多种。代码实现class Solution {p...

2020-03-23 09:03:03 161

原创 剑指offer 树的子结构(C++)

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路这种问题一定要用递归的方法来解答。先写一个bool类型的匹配函数,从A树的头结点开始与B树进行匹配,如果匹配成功,返回true,否则从A->left开始与B树进行结点匹配,调用匹配函数,A的所有位置均与B树进行匹配,直到匹配成功为止,均不成功,返回false。代码实现/*s...

2020-03-22 17:49:29 161

原创 剑指offer 二进制中1的个数(C++)两种方法

题目描述输入一个整数,输出该数二进制表示中111的个数。其中负数用补码表示。考查知识点1、计算机中的二进制与十进制计算机中的int类型占用444个字节,每个字节占888位,则int类型占用了323232位。计算机中的正整数就是其本身转化为二进制后的表示;负数的表示是其绝对值的补码。原码:一个正数的原码,是按照绝对值大小转换成的二进制数;一个负数的原码,是按照绝对值大小转换成的二进制...

2020-03-21 18:55:16 239

原创 剑指offer 矩形覆盖(C++)

题目描述我们可以用2×12\times12×1的小矩形横着或者竖着去覆盖更大的矩形。请问用nnn个2×12\times 12×1的小矩形无重叠地覆盖一个2×n2 \times n2×n的大矩形,总共有多少种方法?比如n=3n=3n=3时,2×32\times32×3的矩形块有333种覆盖方法:解题思路显然是一道递推类题目,可以使用迭代或者递归方法解决。为方便起见,nnn个矩形的覆盖总数...

2020-03-21 12:35:14 163

原创 剑指offer 把字符串转换成整数(C++)题目有bug

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470解题思路首先这道题目 一定是有bug存在的,问题就在于int类型范围的特性问题,而...

2020-03-20 22:50:21 188

原创 剑指offer 不用加减乘除做加法(C++)

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路可以使用C++自带的STL中的accumulate进行计算。代码实现class Solution {public: int Add(int num1, int num2) { vector<int> v; v.push_back(nu...

2020-03-20 15:56:09 136

原创 剑指offer 求1+2+3+...+n(C++)

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题思路使用函数递归返回求和即可。代码实现class Solution {public: int Sum_Solution(int n) { if(n <= 0) return 0; ...

2020-03-20 15:54:20 149

原创 剑指offer 从上往下打印二叉树(C++)

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路就是二叉树的层序遍历序列。代码实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/...

2020-03-20 15:50:53 196

原创 剑指offer 二叉树的镜像(C++)

问题描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5解题...

2020-03-20 15:47:43 165

原创 剑指offer 数值的整数次方(C++)

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解题思路需要判断base 和 exponent 是否为0的情况 和 exponent为负数的情况。代码实现class Solution {public: double Power(double base, int exp...

2020-03-19 20:15:57 204 2

原创 剑指offer 调整数组顺序使奇数位于偶数前面 三种方法(C++)

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路本题目可以使用排序算法和创建新的数组两种方法来完成。代码实现1、显然这是一个稳定的排序的问题,所谓稳定的排序就是不改变元素的相对位置,数组中相同的元素在排序后,他们的相对位置不变。可以使用直接插入排序和...

2020-03-19 17:53:32 318

原创 剑指offer 链表中倒数第k个结点(C++)

题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路1、统计链表中年所有元素个数,必须要大于k。2、如果链表中一共有nnn个整数(n>k)(n > k)(n>k),打印倒数第kkk个数,即打印正数第n−k+1n - k + 1n−k+1个数。代码实现/*struct ListNode { int val; struct ListNode *next; L...

2020-03-19 14:41:41 166

原创 剑指offer 合并两个排序的链表(C++ 递归 非递归)

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路1、首先区别于带有头结点的链表,不带有头结点的链表相对来说麻烦一些。如果是带有头结点的链表,可将其中一个头结点作为兼并后的链表头结点,另外一个直接释放即可。2、两个指针分别指向两个链表的前面,每次循环进行结点数值的比较,较小者为待插入的结点,循环至其中一个指针指向空为止,另外一个则直...

2020-03-19 11:57:57 148

原创 剑指offer 替换空格(C++)

问题描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路涉及到字符串的拷贝问题。1、最初的想法是设置一个字符串指针指向%20字符,原字符串中遇到空格字符后与%20字符串替换,再继续遍历原字符串,C++中的string类重载了+运算符,并且有很多关于字符串拼接替换查找等的函数...

2020-03-18 19:43:47 173

原创 LeetCode 反转链表(C++)

题目描述反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解题思路本题目可以通过三种方法,递归和非递归(迭代)和 创建新数组 的方法实现。非递归:对于上面的例子,可将结点1的指针指向空,结点2的指针...

2020-03-18 10:43:50 183

原创 剑指offer 从尾到头打印链表(C++)

问题描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解答思路链表的逆序有很多种方法,对于C++语言,基本都可以通过vector的相关函数实现,也可以定义栈,将链表中的数据依次压栈,再将栈中元素依次插入动态数组,等等。代码实现本题先将链表中结点元素存入数组,再调用reverse函数将数组元素逆序。class Solution {public: vector&l...

2020-03-17 22:44:23 129

原创 leetcode 计算二叉树的直径(C++)

问题描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。解题思路本题是递...

2020-03-17 22:30:13 709

原创 leetcode 数组中的各项位数的求和(C++)

问题描述给出两个 非空的 链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...

2020-03-17 22:12:47 415

原创 LeetCode 两数之和(4种方法 C、C++ 实现)

问题描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定 nums=[2,7,11,15],target=9nums = [2, 7, 11, 15], target = 9nums=[2,7,11,15],target=9因为...

2020-03-17 20:56:57 350

原创 Leetcode 一个数组的三等分(C++实现)

问题描述给你一个整数数组 AAA,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引i+1<ji+1 < ji+1<j 且满足 (A[0]+A[1]+...+A[i]==A[i+1]+A[i+2]+...+A[j−1]==A[j]+A[j−1]+...+A[A.length−1])(A[0] + A[1] + ... + ...

2020-03-17 16:47:57 1023

空空如也

空空如也

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

TA关注的人

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