-
牛客网 左旋装字符串
时间限制:1秒 空间限制:32768K 热度指数:7423本题知识点: 字符串算法知识视频讲解题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!题解:利用substr函数代码如下:class Solution {public: string...…
-
牛客网 剑指offer 和为S的两个数字
时间限制:1秒空间限制:32768K热度指数:7214**算法知识视频讲解题目描述输出描述:对应每个测试案例,输出两个数,小的先输出。题解:利用vector一种利用两层FOR循环然后进行剪枝;一种利用set存储数组中的值,因为递增序列,所以本身就无重复的,恰好可以用set然后遍历查询是否sum-*b在不在set中,若在,则保存到vector中代码如下:class Solution {public: vector<int> FindNumbersWithSum(vector...…
-
第一行代码第二版
由于第一行代码在2016年11月出了第二版,所以看看新特性以及回顾一下Android基本知识…
-
Android Studio与Genymotion
记录下自己的一时兴起所导致的坑,正所谓自己挖的坑,就得自己填。。1.由于重装电脑,手残的把用户名设置为了中文,所以不管是在安装Android Studio还是在使用Genymotion时都遇到了一系列由于中文所导致的问题,如Android Studio无法打开,Genymotion安装模拟器并不能安装等等。。。这种问题怎么解决呢,第一,如果你不想再次重装,那你就重开一个账户,用来装Android与Genymotion等2.若是碰到了无法启动模拟器的情况,我以我碰到的问题来说明一下1.无法启...…
-
牛客网 剑指offer 和为S的连续正数序列
时间限制:1秒空间限制:32768K热度指数:6377**算法知识视频讲解题目描述输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序题解://sum=(a1+an)n/2;n=an-a1+1;(a1+an)(an-a1+1)=2*sum=d*l;a1=(d-l+1)/2;an=(d+l-1)/2代码如下://s=(a1+an)n/2;n=an-a1+1;class Solution {public: vector<...…
-
牛客网 剑指offer 和为S的两个数字
时间限制:1秒空间限制:32768K热度指数:7214**算法知识视频讲解题目描述输出描述:对应每个测试案例,输出两个数,小的先输出。题解:利用vector一种利用两层FOR循环然后进行剪枝;一种利用set存储数组中的值,因为递增序列,所以本身就无重复的,恰好可以用set然后遍历查询是否sum-*b在不在set中,若在,则保存到vector中代码如下:class Solution {public: vector<int> FindNumbersWithSum(vector...…
-
牛客网 剑指offer 二叉树中和为某一值的路径
时间限制:1秒空间限制:32768K热度指数:8801**算法知识视频讲解题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。题解:利用dfs代码如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N...…
-
牛客网 剑指offer 二叉搜索树与双向链表
时间限制:1秒空间限制:32768K热度指数:6676**算法知识视频讲解题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题解:双向链表,先通过中序遍历获得顺序然后遍历vector得到右边,然后再往左遍历代码如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x),...…
-
牛客网 剑指offer 字符流中第一个不重复的字符
时间限制:1秒空间限制:32768K热度指数:4286本题知识点:字符串**算法知识视频讲解题目描述输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。题解:利用map值为1代码如下:class Solution{public: unordered_map<char,int>m; vector<char>v; //Insert one char from stringstream void Insert(char ch) { ...…
-
牛客网 剑指offer 二叉树中序遍历的下一个结点
时间限制:1秒空间限制:32768K热度指数:4658**算法知识视频讲解题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题解:有右孩子,则找右孩子的最左孩子,若无则返回右孩子无右孩子,则返回父节点的左孩子。代码如下:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *r...…
-
牛客网 剑指offer 二叉搜索树的后序遍历序列
时间限制:1秒空间限制:32768K热度指数:9504**算法知识视频讲解题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题解:利用后序遍历的特征,前半部分为小于根节点,后半部分为大于根节点代码如下:class Solution {public: int index=0; bool VerifySquenceOfBST(vector<int> sequence) { ...…
-
牛客网 剑指offer 链表中环的入口结点
时间限制:1秒空间限制:32768K热度指数:5105本题知识点:链表**算法知识视频讲解题目描述一个链表中包含环,请找出该链表的环的入口结点。题解:利用STL的强大功能中的之一set,若不用set代码如下:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: L...…
-
牛客网 剑指offer 连续子数组的最大和
时间限制:1秒空间限制:32768K热度指数:8659本题知识点:数组**算法知识视频讲解题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是...…
-
牛客网 剑指offer 栈的压入、弹出序列
时间限制:1秒空间限制:32768K热度指数:10544本题知识点:栈**算法知识视频讲解题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题解:首先定义一个栈,根据顺序来压入栈,每压入一次便与出栈序列比较,若顶部与当前出栈元素相同,则进...…
-
牛客网 剑指offer 数组中重复的数字
时间限制:1秒空间限制:32768K热度指数:6192本题知识点:数组**算法知识视频讲解题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。题解:利用map来判断是否为重复数字,若map[x]的值大于1则为重复数字返回true,若无,则返回falseps...…
-
牛客网 剑指offer 把二叉树打印成多行
时间限制:1秒空间限制:32768K热度指数:4603**算法知识视频讲解题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。题解:由于是打印出多行,所以要用队列的话必须判断出一行的 结束点,这个点其实不太好判断,所以我利用了一个结构体,结构体存val,与height,这样的话便将每一个点的高度与值均存下来了,现在只需要根据高度来赋值就好代码如下:/*struct TreeNode { int val; struct TreeNode *left; s...…
-
牛客网 剑指offer 平衡二叉树
时间限制:1秒空间限制:32768K热度指数:6833**算法知识视频讲解题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。题解:判断是否为平衡二叉树的条件是左孩子的高度与右孩子的高度相差至少为2时就不平衡,否则平衡,所以定义一个getheight函数来获得结点的高度,然后进行递归判断是否为平衡二叉树即可注意当传入的结点为空时则为平衡二叉树,因为此时遍历完一条边,需要计算高度来判断是否为平衡二叉树,所以需要返回true.代码如下:class Solution {public: i...…
-
牛客网 剑指offer 对称的二叉树
时间限制:1秒空间限制:32768K热度指数:5138**算法知识视频讲解题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。题解:利用镜像的含义,左子树等于右子数,左子树的左子树=右子数的右子数左子树的右子数=右子数的左子树代码如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode...…
-
牛客网 剑指offer 从上往下打印二叉树
时间限制:1秒空间限制:32768K热度指数:10910**算法知识视频讲解题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。利用队列,当当前结点不为空,push进入队列,然后在while循环中检测它的左孩子与右孩子是否存在,若存在则push进入队列,将每一个pop出来的结点的值放入vector,即为层次遍历的结果代码如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tr...…
-
牛客网 剑指offer 二叉搜索树的第K个结点
时间限制:1秒空间限制:32768K热度指数:4328**算法知识视频讲解题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。题解:二叉搜索树的中序遍历是递增的,所以可以用vector保存,然后遍历vector,返回第k个,如果没有返回NULL代码如下:/*struct TreeNode { int val; struct Tre...…