牛客题
青年小陈陈
这个作者很懒,什么都没留下…
展开
-
Zigzag打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:在原来的广搜基础上,按照每层的节点数量(即q.size())进行分组操作,一批一批来。/*struct TreeNode { int val; struct TreeNode *left; struct...原创 2019-04-06 11:57:07 · 309 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/cl...原创 2019-04-12 16:33:12 · 79 阅读 · 0 评论 -
二分查找:统计一个数字在递增数组中出现的次数
class Solution {public: int findPos(vector<int> v,double x) { int l = 0; int r = v.size()-1; //核心代码就这么多 while(l<=r) { ...原创 2019-04-08 21:17:41 · 381 阅读 · 0 评论 -
使用前序和中序重建二叉树(使用vector)
题意:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回struct TreeNode { int val; TreeNode *left; TreeNode *righ...原创 2019-04-12 09:44:09 · 330 阅读 · 0 评论 -
双指针问题:求链表中环的入口节点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null思路:把链表里的环看做一条跑道,两个人在匀速跑步,那么跑的快的那个必然在某一刻会“套圈”。所以,设置两个指针pSlow和pFast,pSlow一次下一个节点,pFast一次下两个节点。如果有环,他俩必然在环中相遇。所以接下的问题就是怎么把环的入口给弄出来,思路如下:注:假设是逆时针。所以 相...原创 2019-04-08 21:07:13 · 178 阅读 · 0 评论 -
双指针问题:和为S两个的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:使用双指针,一个指头(a),向右移动。一个指向尾(b),向左移动。由于(a+1)*(b-1)=a*b+(b-a)-a>=a*b,所以满足乘积最小。class Solution ...原创 2019-04-08 20:55:31 · 102 阅读 · 0 评论 -
最长公共子串(简单动态规划问题)
#include <iostream>#include <algorithm>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <stack>#include <map>#inc...原创 2019-04-02 21:29:59 · 157 阅读 · 0 评论 -
C++ STL next_permutation()的使用
原形:#include <algorithm> bool next_permutation(iterator start,iterator end)当当前序列不存在下一个排列时,函数返回false,否则返回trueiterator可以为数组地址,如a[30]:next_permutation(a,a+30)例题:题目描述输入一个字符串,按字典序打...原创 2019-04-11 14:25:50 · 149 阅读 · 0 评论 -
与&运算:二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。class Solution {public: int NumberOf1(int n) { int cnt=0; while(n!=0){ n=n&n-1; cnt++; } ...原创 2019-04-11 13:56:35 · 366 阅读 · 0 评论 -
斐波那契数列扩展,递归的理解
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?思路:f(1)=1; f(2)=f(1)+f(0);f(3)=f(2)+f(1)+f(0)=f(3-1)+f(3-2)+f(3-3)f(3)的解释:台阶有3个,第一步可以跳出1或2或3格。假如第一跳跳出1格,则剩余需要跳的次数是f(2);假如第一跳跳出2格,则剩余需要跳...原创 2019-04-06 22:15:31 · 2921 阅读 · 0 评论 -
关于switch语法
switch:找到匹配的选项,从那一行开始向下执行到底。如果没有匹配成功,就从default开始向下执行到底。在向下执行的过程中遇到break就跳出来。...原创 2019-04-16 17:37:15 · 2233 阅读 · 2 评论