刷题
文章平均质量分 54
Vest-Lee
这个作者很懒,什么都没留下…
展开
-
39.恢复旋转排序的数组
描述给定一个旋转排序数组,在原地恢复其排序。您在真实的面试中是否遇到过这个题? 是说明什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]挑战使用O(1)的额外空间和O(n)时间复杂度...原创 2018-05-17 14:41:50 · 267 阅读 · 1 评论 -
41.最大子数组
描述给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。子数组最少包含一个数您在真实的面试中是否遇到过这个题? 是样例给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6挑战要求时间复杂度为O(n)这道题是《数据结构》第一章中的例题,解法有很多,例如分治思想而时间复杂度O(n)是一种讨巧的方法。即申请一个变量储存最大值,将数组顺次相...原创 2018-05-17 15:24:14 · 147 阅读 · 0 评论 -
44.最小子数组
描述给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。子数组最少包含一个数字您在真实的面试中是否遇到过这个题? 是样例给出数组[1, -1, -2, 1],返回 -3雷同与最大子数组的方法,稍作修改即可。class Solution {public: /* * @param nums: a list of integers * @return: A int...原创 2018-05-17 15:40:42 · 232 阅读 · 0 评论 -
46.Majority Element
描述给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。You may assume that the array is non-empty and the majority number always exist in the array.您在真实的面试中是否遇到过这个题? 是样例给出数组[1,1,1,1,2,2,2],返回 1挑战要求时间复杂度为O(n),空间复...原创 2018-05-17 15:55:11 · 235 阅读 · 0 评论 -
50.数组剔除元素后的乘积
描述给定一个整数数组A。定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。您在真实的面试中是否遇到过这个题? 是样例给出A=[1, 2, 3],返回 B为[6, 3, 2] 没什么难度:class Solution {public: /* * @param nums: Given an in...原创 2018-05-17 16:22:06 · 184 阅读 · 0 评论 -
53.翻转字符串
描述给定一个字符串,逐个翻转字符串中的每个单词。您在真实的面试中是否遇到过这个题? 是说明单词的构成:无空格字母构成一个单词输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个思路简单,注意一个字母的单词,以及何处添加空格的问题。class Solution {public: /* * @par...原创 2018-05-17 16:49:46 · 184 阅读 · 0 评论 -
55.比较字符串
描述比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母在 A 中出现的 B 字符串里的字符不需要连续或者有序。您在真实的面试中是否遇到过这个题? 是样例给出 A = "ABCD" B = "ACD",返回 true给出 A = "ABCD" B = "AABC", 返回 false注意重复,我采取的方法是将已经比较过的字母改写为NULLclass Solut...原创 2018-05-17 17:15:22 · 229 阅读 · 0 评论 -
56.两数之和
描述给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。你可以假设只有一组答案。您在真实的面试中是否遇到过这个题? 是样例给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].挑战Either of the f...原创 2018-05-17 19:24:43 · 390 阅读 · 0 评论 -
60.搜索插入位置
描述给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。您在真实的面试中是否遇到过这个题? 是样例[1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0挑战O(log(n)) time要完成挑战的目标可以采用二分法:class Solution ...原创 2018-05-17 19:37:04 · 203 阅读 · 0 评论 -
64.合并排序数组
描述合并两个排序的整数数组A和B变成一个新的数组。你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。您在真实的面试中是否遇到过这个题? 是样例给出 A = [1, 2, 3, empty, empty], B = [4, 5]合并之后 A 将变成 [1,2,3,4,5]采用了与合并数组II同样的方法class Solution {public: /* ...原创 2018-05-17 19:57:26 · 306 阅读 · 0 评论 -
9. Fizz Buzz 问题
描述给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.您在真实的面试中是否遇到过这个题? 是样例比如 n = 15, 返回一个字符串数组:[ "1", "2", "fizz", "4", "buzz", "fizz", "7"原创 2018-05-05 13:54:08 · 249 阅读 · 0 评论 -
11.二叉查找树中搜索区间
描述给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。您在真实的面试中是否遇到过这个题? 是样例如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22]. 20 /...原创 2018-05-05 14:45:15 · 174 阅读 · 0 评论 -
12.带最小值操作的栈
描述实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。如果堆栈中没有数字则不能进行min方法的调用您在真实的面试中是否遇到过这个题? 是样例如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1class MinSt...原创 2018-05-05 15:51:19 · 191 阅读 · 0 评论 -
66.二叉树的前序遍历
描述给出一棵二叉树,返回其节点值的前序遍历。您在真实的面试中是否遇到过这个题? 是样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].挑战你能使用非递归实现么?遍历二叉树使用递归十分简单:/** * Definition of TreeNode: * class TreeNode { * public: * i...原创 2018-05-18 16:39:05 · 135 阅读 · 0 评论 -
67.二叉树的中序遍历
描述给出一棵二叉树,返回其中序遍历您在真实的面试中是否遇到过这个题? 是样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].挑战你能使用非递归算法来实现么?递归实现相对简单,参照先序遍历,修改一下顺序即可。非递归方法:让指针前往最左,记录路径,开始读数,加入右孩子,重复这个过程。/** * Definition of TreeNod...原创 2018-05-18 19:11:54 · 166 阅读 · 0 评论 -
68.二叉树的后序遍历
描述给出一棵二叉树,返回其节点值的后序遍历。您在真实的面试中是否遇到过这个题? 是样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]挑战你能使用非递归实现么?递归实现较为简单;非递归实现,较先序遍历 中序遍历 较为复杂,需要考察上一个读取的节点,如果是该节点的右孩子或者该节点没有右孩子,则该节点允许被读取。/** * Defin...原创 2018-05-18 19:49:07 · 174 阅读 · 0 评论 -
69.二叉树的层级遍历
描述给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)您在真实的面试中是否遇到过这个题? 是样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]挑战挑战1:只使用一个队列去实现它挑战2:用DFS算法来做挑战1:要只使用一个队列就需要区分层,可以...原创 2018-05-19 23:18:01 · 318 阅读 · 0 评论 -
80.中位数
描述给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。您在真实的面试中是否遇到过这个题? 是样例给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5挑战时间复杂度为O(n)这是一个以空间换取时间的做法:建立散列表,值与个数一一对应,记录最大值与最小值,统计数组个数,找出中位数所在的位...原创 2018-05-19 14:49:58 · 558 阅读 · 0 评论 -
82.落单的数
描述给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。您在真实的面试中是否遇到过这个题? 是样例给出 [1,2,2,1,3,4,3],返回 4挑战一次遍历,常数级的额外空间复杂度一次遍历想得出最终结果。可以考虑如何抵消掉掉相同的数,位运算中的异或给了思路,相同为0,相异为1。class Solution {public: /** * @pa...原创 2018-05-19 20:28:29 · 217 阅读 · 0 评论 -
85.在二叉查找树中插入节点
描述给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。You can assume there is no duplicate values in this tree + node.您在真实的面试中是否遇到过这个题? 是样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ ...原创 2018-05-19 22:41:14 · 147 阅读 · 0 评论 -
93.平衡二叉树
描述给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 您在真实的面试中是否遇到过这个题? 是样例给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}A) 3 B) 3 / \ \ 9 20 ...原创 2018-05-19 23:19:25 · 198 阅读 · 0 评论 -
15.全排列
描述给定一个数字列表,返回其所有可能的排列。你可以假设没有重复数字。您在真实的面试中是否遇到过这个题? 是样例给出一个列表[1,2,3],其全排列为:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]挑战使用递归和非递归分别解决。递归的方法:(深度优先搜索)思路很简单,每次排列一位,剩余位数全排列。class ...原创 2018-05-14 09:44:01 · 217 阅读 · 0 评论 -
96.链表划分
描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。您在真实的面试中是否遇到过这个题? 是样例给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null以空间换取时间,新建四个指针用来储存第一个...原创 2018-05-20 17:34:37 · 178 阅读 · 0 评论 -
97.二叉树的最大深度
描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。您在真实的面试中是否遇到过这个题? 是样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.使用递归的方法较为简单/** * Definition of TreeNode: * class TreeNode { * public: * int ...原创 2018-05-20 18:05:21 · 116 阅读 · 0 评论 -
100.删除排序数组中的重复数字
描述给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。您在真实的面试中是否遇到过这个题? 是样例给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。新建一个变量用来储存当前的数字,与数组中的数字比较,相同则删除,不同则留下并替换变量中的数字。class Solution...原创 2018-05-20 18:43:20 · 244 阅读 · 0 评论 -
101. 删除排序数组中的重复数字 II
描述跟进“删除重复数字”:如果可以允许出现两次重复将如何处理?新建一个变量储存出现次数即可。class Solution {public: /** * @param A: a list of integers * @return : return an integer */ int removeDuplicates(vector<int>...原创 2018-05-20 19:43:12 · 151 阅读 · 0 评论 -
16.带重复元素的排列
描述给出一个具有重复数字的列表,找出列表所有不同的排列。您在真实的面试中是否遇到过这个题? 是样例给出列表 [1,2,2],不同的排列有:[ [1,2,2], [2,1,2], [2,2,1]]挑战使用递归和非递归分别完成该题。递归方法:参照16题,为排除重复元素,要保证需要进行交换的两数之间没有重复的数。class Solution {public: /* *...原创 2018-05-14 15:29:26 · 224 阅读 · 0 评论 -
17.子集
描述给定一个含不同整数的集合,返回其所有的子集子集中的元素排列必须是非降序的,解集必须不包含重复的子集您在真实的面试中是否遇到过这个题? 是样例如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]挑战你可以同时用递归与非递归的方式解决么?...原创 2018-05-14 16:12:47 · 251 阅读 · 0 评论 -
109.数字三角形
描述给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。您在真实的面试中是否遇到过这个题? 是样例比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 ( 2 + 3 + 5 ...原创 2018-05-20 23:23:08 · 233 阅读 · 0 评论 -
14.二分查找
描述给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。您在真实的面试中是否遇到过这个题? 是样例在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。挑战如果数组中的整数个数超过了2^32,你的算法是否会出错?基本的二分法:class Solution...原创 2018-05-08 14:26:34 · 190 阅读 · 0 评论 -
37.反转一个3位整数
描述反转一个只有3位数的整数。你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000。您在真实的面试中是否遇到过这个题? 是样例123 反转之后是 321。900 反转之后是 9。入门难度,没什么值得说的。class Solution {public: /** * @param number: A 3-digit number. * @ret...原创 2018-05-15 09:32:38 · 250 阅读 · 0 评论 -
145.大小写转换
描述将一个字符由小写字母转换为大写字母您在真实的面试中是否遇到过这个题? 是样例a -> Ab -> B入门难度,我使用ASCII码相减的办法,但是这样处理的耗时却相当高。class Solution {public: /** * @param character: a character * @return: a character */ ...原创 2018-05-15 09:43:42 · 914 阅读 · 0 评论 -
366.斐波那契数列
描述查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...The Nth fibonacci number won't exceed the max value of signed 32-bit integer in t...原创 2018-05-15 09:57:02 · 171 阅读 · 0 评论 -
452.删除链表中的元素
描述删除链表中等于给定值val的所有节点。您在真实的面试中是否遇到过这个题? 是样例给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。入门难度,注意一些边缘事件的解决:/** * Definition of singly-linked-list: * class L...原创 2018-05-15 11:07:30 · 229 阅读 · 0 评论 -
454.矩阵面积
描述实现一个矩阵类Rectangle,包含如下的一些成员变量与函数:两个共有的成员变量 width 和 height 分别代表宽度和高度。一个构造函数,接受2个参数 width 和 height 来设定矩阵的宽度和高度。一个成员函数 getArea,返回这个矩阵的面积。您在真实的面试中是否遇到过这个题? 是样例Java: Rectangle rec = new Rectangle(3, ...原创 2018-05-15 13:34:19 · 152 阅读 · 0 评论 -
463.整数排序
描述给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。您在真实的面试中是否遇到过这个题? 是样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。采用 冒泡排序:最坏时间复杂度{\displaystyle O(n^{2})}最优时间复杂度{\displaystyle O(n)}平均时间复杂度{\displaystyle...原创 2018-05-15 13:53:33 · 244 阅读 · 0 评论 -
466.链表节点计数
描述计算链表中有多少个节点.您在真实的面试中是否遇到过这个题? 是样例给出 1->3->5, 返回 3.入门难度:注意代码鲁棒性class Solution {public: /** * @param head: the first node of linked list. * @return: An integer */ int co...原创 2018-05-15 13:58:42 · 442 阅读 · 0 评论 -
484.交换数组两个元素
描述给你一个数组和两个索引,交换下标为这两个索引的数字您在真实的面试中是否遇到过这个题? 是样例给出 [1,2,3,4] index1 = 2, index2 = 3. 交换之后变成 [1,2,4,3]public class Solution { /** * @param A: An integer array * @param index1: the first ...原创 2018-05-15 14:03:20 · 478 阅读 · 0 评论 -
632.二叉树的最大节点
描述在二叉树中寻找值最大的节点并返回。您在真实的面试中是否遇到过这个题? 是样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。入门难度:一个简单的遍历二叉树/** * Definition of TreeNode: * class TreeNode { * public: * in...原创 2018-05-15 15:24:41 · 250 阅读 · 0 评论 -
763.Hex Conversion
描述Given a decimal number n and an integer k, Convert decimal number n to base-k.1.0<=n<=2^31-1, 2<=k<=162.Each letter over 9 is indicated in uppercase您在真实的面试中是否遇到过这个题? 是样例Example 1:Given ...原创 2018-05-15 16:41:44 · 155 阅读 · 0 评论