05 2016 档案
摘要:题目 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 您在真实的面试中是否遇到过这个题? Yes 对于一个给定的 source 字符串和一个 target 字符串,你
阅读全文
摘要:题目 请判定一个数独是否有效。 该数独可能只填充了部分数字,其中缺少的数字用 . 表示。 注意事项 一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。 说明 什么是 数独? http://sudoku.com.au/TheRules.aspx http://baike.ba
阅读全文
摘要:给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。 注意事项 你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。 在这个题目中,我们将空字符串判定为有效回文。 样例 "A man, a plan, a canal: Panama" 是一个回文。 "rac
阅读全文
摘要:题目 有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。 问有多少条不同的路径? 注意事项 n和m均不超过100 样例 1,1 1,2 1,3 1,4 1,5 1,6 1,7
阅读全文
摘要:题目 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。 C++代码 1 int removeDuplicates(vector<int> &nums) { 2 // write yo
阅读全文
摘要:题目 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。 C++代码 1 int removeDuplicat
阅读全文
摘要:题目 给定一个整数数组A。 定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。 样例 给出A=[1, 2, 3],返回 B为[6, 3, 2] vector<long long> productExcludeIts
阅读全文
摘要:题目 here is a fence with n posts, each post can be painted with one of the k colors.You have to paint all the posts such that no more than two adjacent
阅读全文
摘要:题目 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 注意事项 子数组最少包含一个数字 样例 给出数组[1, -1, -2, 1],返回 -3 思路 动态规划解决 C++代码 1 int minSubArray(vector<int> nums) { 2 // write your c
阅读全文
摘要:题目 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意事项 子数组最少包含一个数 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 挑战 要求时间复杂度为O(n) 思路 动态规划解决 可以把时间复杂度降低为O(n)
阅读全文
摘要:题目 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 样例 给出数组[1,1,1,1,2,2,2],返回 1 思路 首先 发现所给的数组是顺序排列好的。 用动态规划的思路解决 可以把时间复杂度减小到O(n)空间复杂度O(1) C++代码 1 int majorit
阅读全文
摘要:题目 给一个词典,找出其中所有最长的单词。 样例 在词典 { "dog", "google", "facebook", "internationalization", "blabla" } 中, 最长的单词集合为 ["internationalization"] 在词典 { "like", "lov
阅读全文
摘要:题目 翻转一棵二叉树 您在真实的面试中是否遇到过这个题? Yes 翻转一棵二叉树 翻转一棵二叉树 您在真实的面试中是否遇到过这个题? Yes Yes Yes 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4和前序遍历代码很相似从叶子节点依次翻转递归到根节点C++代码 void in
阅读全文
摘要:题目 用插入排序对链表排序 样例 Given 1->3->2->0->null, return 0->1->2->3->null C++代码 ListNode *insertionSortList(ListNode *head) { // write your code here if (!head
阅读全文
摘要:题目 检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 样例 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树。 1 1 / \ / \ 2 3 and 2 3 / \ 4 4 就不是等价的。 C++
阅读全文
摘要:题目 写一个算法来判断一个数是不是"快乐数"。 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。 样例 19 就是一个快乐数。 1^2 + 9^2 = 82
阅读全文
摘要:题目 如果要将整数A转换为B,需要改变多少个bit位? 如把31转换为14,需要改变2个bit位。 (31)10=(11111)2 (14)10=(01110)2 思路 要考虑负数的问题 如果 一正一负 将他们去全部变成正数 后要+1个符号为的变化 都是负数 只要变成正数进行比较就行了 C++代码
阅读全文
摘要:题目 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 样例 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6 4 \ 5 \ 6思路left = root->left;right = root->r
阅读全文
摘要:题目 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 样例 在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。 思路 二分查找 找3,返回为2/3
阅读全文
摘要:题目 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。 思路 因为O(1)内删除所以 不能从头节点去遍历找他的前驱节点 因为给的是待删除节点, 所以如果删除下一个节点可以在o(1)复杂度完成 所以 把当前节点覆盖成下一
阅读全文
摘要:题目 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示: 1, 11, 21, 1211, 111221, ... 1 读作 "one 1" -> 11. 11 读作 "two 1s" -> 21. 21 读作 "one 2, then one 1" -> 1211. C++代码
阅读全文
摘要:题目 假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法 返回 3 1 2 3 5 8 13... step[2] = step[0] + step[1]; C++代码
阅读全文
摘要:题目 给出一棵二叉树,返回其节点值的前序遍历。 和中序遍历基本相同 C++代码
阅读全文
摘要:题目 给出一棵二叉树,返回其节点值的后序遍历。 思路 后序比较麻烦 需要另外一个变量来记录当前节点入栈的次数 设计pair<TreeNode*, int> p; p.first 为二叉树节点 p.second 为当前节点入栈的次数 C++代码
阅读全文
浙公网安备 33010602011771号