自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【剑指Offer】JZ3从尾到头打印链表 C++

题目地址:牛客网题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。示例1输入{67,0,24,58}返回值[58,24,0,67]思路:先把链表放进栈里,利用栈后进先出的性质,装到vector里。最后输出vector。代码:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val

2021-03-18 20:47:13 139 4

原创 【练习】2020校招4399游戏开发岗笔试编程题 C++(4)

题目地址:牛客网第一题一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10)思路: 模拟。用两个值分别记录小球总路线长度和每次弹起来的高度。代码:#include<iostream>#include<cstdio>using namespace std;int main(){ int n; while(cin>>n) { doub

2021-03-16 22:06:39 2788 4

原创 【剑指Offer】JZ1二维数组中的查找 C++

题目地址:牛客网题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1输入7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值true思路:从左下角或者右上角开始找,我这里选的是左下角,于是比target大的话就向上,比它小就向右。代码:class Solution {publi

2021-03-13 16:39:22 149

原创 【华为机试题库】HJ1字符串最后一个单词的长度 C++

题目地址:牛客网题目:计算字符串最后一个单词的长度,单词以空格隔开。输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例1输入hello nowcoder输出8思路:随便点进去看正好看到这题,就写了一下。字符串倒着读就行,遇到空就可以输出。代码:#include<iostream>#include<cstring>#include<string.h&gt

2021-03-13 15:16:05 290

原创 【剑指Offer】JZ27字符串的排列 C++(STL库全排列)

题目地址:牛客网题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入“ab”返回值[“ab”,“ba”]思路:一看到题目就想到了在紫书里学的STL库里的全排列。但是因为输入的是string,所以先把它转到char数组里,但是输出数组又会出错,所以输出时再转

2021-03-12 22:27:38 111

原创 【剑指Offer】JZ22从上往下打印二叉树 C++

题目地址:牛客网题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。示例1输入{5,4,#,3,#,2,#,1}返回值[5,4,3,2,1]思路:层次遍历。代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Soluti

2021-03-12 21:59:26 151

原创 【剑指Offer】JZ39平衡二叉树 C++

题目地址:牛客网题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。示例1输入{1,2,3,4,5,6,7}返回值true思路:用之前一题求二叉树深度的代码作为函数,可以求结点的高度。写了一串判断语句,因为懒得优化了。。如果二叉树是空的直接返回true。

2021-03-12 20:02:12 131

原创 【剑指Offer】JZ38二叉树的深度 C++

题目地址:牛客网题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入{1,2,3,4,5,#,6,#,#,7}返回值4思路:就是求二叉树一共有几层,用递归的方法就可以求出。代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x),

2021-03-12 18:14:30 146

原创 【剑指Offer】JZ13调整数组顺序使奇数位于偶数前面 C++

题目地址:牛客网题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入[1,2,3,4]返回值[1,3,2,4]思路:建两个vector,奇数放一个,偶数放一个,再把偶数放在奇数后面。代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

2021-03-11 22:47:46 176 3

原创 【剑指Offer】JZ50数组中重复的数字 C++

题目地址:牛客网题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是第一个重复的数字2。没有重复的数字返回-1。示例1输入[2,3,1,0,2,5,3]返回值2思路:也是就遍历……通过率高的题目都挺简单的。代码:class Solution {public: /**

2021-03-11 22:27:40 159

原创 【剑指Offer】JZ2替换空格 C++

题目地址:牛客网题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。示例1输入“We Are Happy”返回值“We%20Are%20Happy”思路:发现正则表达式用不了,所以就直接遍历一遍了。代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *

2021-03-11 22:17:20 158

原创 【剑指Offer】JZ30连续子数组的最大和 C++

题目地址:牛客网题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例1输入[1,-2,3,10,-4,7,2,-5]返回值18说明输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。思路:动态规划。注意有负数,初始值设成很小的负数。代码:class Solution {public: int

2021-03-09 23:24:52 109 2

原创 【剑指Offer】JZ28数组中出现次数超过一半的数字 C++

题目地址:牛客网题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例1输入[1,2,3,2,2,2,5,4,2]返回值2思路:直接从前往后遍历,遇到超过一半的直接return。复杂度O(n)。代码:class Solution {public: int MoreThanHalfNum_Solution(

2021-03-08 20:04:55 135 4

原创 【剑指Offer】JZ18二叉树的镜像 C++

题目地址:牛客网题目:操作给定的二叉树,将其变换为源二叉树的镜像。比如:示例1输入{8,6,10,5,7,9,11}返回值{8,10,6,11,9,7,5}思路:一开始想用层次遍历来写,但发现返回有点麻烦。然后发现递归会方便很多。出错一次在于以为有一个空结点就不用交换,但其实都要,所以就不用判定特殊情况了。代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode

2021-03-08 16:51:11 136

原创 【剑指Offer】JZ16合并两个排序的链表

题目地址:牛客网题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。示例1输入{1,3,5},{2,4,6}返回值{1,2,3,4,5,6}思路:因为原本两个链表就是递增的,所以只要遍历就可以了。坑点在于,C++新建链表要new开辟空间。代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL)

2021-03-07 19:59:24 102

原创 【剑指Offer】JZ5用两个栈实现队列

题目地址:牛客网题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:因为栈是一头进出,队列是一头进一头出,所以只要第一个栈进,第二个栈接受第一个栈出来的元素再弹出,就能模拟队列。代码:class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack1.empty())

2021-03-06 16:39:07 136

原创 【剑指Offer】JZ60把二叉树打印成多行

题目地址:牛客网题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。示例1输入{8,6,10,5,7,9,11}返回值[[8],[6,10],[5,7,9,11]]思路:普普通通层次遍历。原本输出挺麻烦的,但是看到一个大佬写的,原来可以vector套vector输出,很简洁。直接看代码吧。代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *r

2021-03-05 16:22:31 132

原创 【剑指Offer】JZ6旋转数组的最小数字

题目地址:牛客网题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例1输入[3,4,5,1,2]返回值1思路:题目上写着本题知识点“二分”,所以就用二分写了。三种情况,一种是类似于4567123,其中mid>first,mid>last,这时候向右边寻找。第二种类似于6712345,其中mid<first,mid&

2021-03-05 15:27:24 136

原创 【剑指Offer】JZ62二叉搜索树的第K个结点

题目地址:牛客网题目:给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。示例1输入{5,3,7,2,4,6,8},3返回值{4}说明按结点数值大小顺序第三小结点的值为4思路:中序遍历二叉搜索树,第k小的结点是中序遍历的第k个结点。代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :

2021-03-05 14:18:29 117

原创 【剑指Offer】JZ8跳台阶

题目地址:牛客网题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入 1返回值 1示例2输入 4返回值 5思路:在草稿纸上计算前4种台阶发现是1 2 3 5,由此推算规律是dp[i]=dp[i-2]+dp[i-1].代码:class Solution {public: int jumpFloor(int number) { int dp[10001];

2021-03-05 13:45:35 84

空空如也

空空如也

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

TA关注的人

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