摘要: Question 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 Solution n & (n 1) 会将n中最右边那个1置为0,置零了多少次,就有多少个1. Code 阅读全文
posted @ 2017-06-30 23:39 清水汪汪 阅读(111) 评论(0) 推荐(0) 编辑
摘要: Question 我们可以用2 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 1的小矩形无重叠地覆盖一个2 n的大矩形,总共有多少种方法? Solution 递推式子 f(n) = f(n 1) + f(n 2) 实现有递归和非递归两种 Code C++ class Solution { p 阅读全文
posted @ 2017-06-30 23:34 清水汪汪 阅读(125) 评论(0) 推荐(0) 编辑
摘要: Question 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 Solution 这道题是数学推导,结论是2^(n 1). Code 阅读全文
posted @ 2017-06-30 23:30 清水汪汪 阅读(113) 评论(0) 推荐(0) 编辑
摘要: Question 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 Solution 递推式子 f(n) = f(n 1) + f(n 2) 解法类似于斐波那契 Code C++ class Solution { public: int jumpFloor( 阅读全文
posted @ 2017-06-30 23:28 清水汪汪 阅读(112) 评论(0) 推荐(0) 编辑
摘要: Question 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n 阅读全文
posted @ 2017-06-30 23:21 清水汪汪 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Question 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 S 阅读全文
posted @ 2017-06-30 23:17 清水汪汪 阅读(110) 评论(0) 推荐(0) 编辑
摘要: Question 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 Solution stack1用来push新到来的数据 stack2用来pop数据,如果stack2为空,那么就将stack1的数据移动到stack2,这样最先push到stack1的最后push 阅读全文
posted @ 2017-06-30 23:02 清水汪汪 阅读(125) 评论(0) 推荐(0) 编辑
摘要: Question 输入一个链表,从尾到头打印链表每个节点的值。 Solution 如果这道题目限制O(1)的存储空间的话,可以考虑反转链表,然后再打印即可 如果没有限制的话,遍历是从头到尾,打印是从尾到头,这个时候我们应该想到用栈,先入后出的特点。 时间复杂度为O(n),空间复杂度为O(n) Cod 阅读全文
posted @ 2017-06-30 22:54 清水汪汪 阅读(94) 评论(0) 推荐(0) 编辑
摘要: Question 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 Solution 这道题目的话,因为是数组,如果从头开始遍历的话,遇到一个空格,那么后面的字符都将移动。 因此我们可以考虑先判 阅读全文
posted @ 2017-06-30 22:42 清水汪汪 阅读(160) 评论(0) 推荐(0) 编辑
摘要: Question 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 Solution 这题的技巧性比较强,因为最右上角的那个数字是这一行最大的,这一列最小的,所以可能将目标值和它进行 阅读全文
posted @ 2017-06-30 22:35 清水汪汪 阅读(252) 评论(0) 推荐(0) 编辑
摘要: Question 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 Solution 用vector存数据流 sort排序 返回中位数 Code 阅读全文
posted @ 2017-06-30 21:12 清水汪汪 阅读(141) 评论(0) 推荐(0) 编辑
摘要: Question 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回 字符。 So 阅读全文
posted @ 2017-06-30 21:04 清水汪汪 阅读(323) 评论(0) 推荐(0) 编辑
摘要: Question 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1 2 3 3 4 4 5 处理后为 1 2 5 Solution 链表的题目一般都会考虑用一个额外的节点,因为第一个节点可能重复了,那么会被删除,重复的节点需要全部删除,那 阅读全文
posted @ 2017-06-30 20:43 清水汪汪 阅读(1232) 评论(0) 推荐(0) 编辑
摘要: Question 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m 1的那个小朋友要出列唱首歌,然后可以在礼 阅读全文
posted @ 2017-06-30 19:43 清水汪汪 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Question 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 Solution ab 阅读全文
posted @ 2017-06-30 17:46 清水汪汪 阅读(222) 评论(0) 推荐(0) 编辑
摘要: Question 给定一个数组A[0,1,...,n 1],请构建一个数组B[0,1,...,n 1],其中B中的元素B[i]=A[0] A[1] ... A[i 1] A[i+1] ... A[n 1]。不能使用除法。 Solution 不能用除法,那么我们可以考虑构建除去A[i] 的左右两部分的 阅读全文
posted @ 2017-06-30 17:13 清水汪汪 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Question 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 Solution 用一个队列保存当前结点的孩子结点 然后要记录即将出队列结点的个数,因为会有新的节点入队列,所以要记录,然后一次遍历,这些节点的孩子又入队列。 Code 阅读全文
posted @ 2017-06-30 11:30 清水汪汪 阅读(261) 评论(0) 推荐(0) 编辑
摘要: Question 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 Solution 二叉搜索树的中序遍历是一个有序序列 因为是二叉搜索树,左孩子,的父亲肯定比它大,肯定可以找到下一个节点 主要是处理右孩子节点和根 阅读全文
posted @ 2017-06-30 11:12 清水汪汪 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Question 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 Solution 因为树的每个节点都有两个指针,并且双向链表的节点也有两个指针,所以这个转换是可行的。 首先是有序的链表,并且是二叉搜索树,那么我们可以想到用中序遍历 阅读全文
posted @ 2017-06-30 10:06 清水汪汪 阅读(117) 评论(0) 推荐(0) 编辑