05 2018 档案

摘要:虽然陆奇离开了,但在他担任 COO 的这段时间里,为百度铺好了一条通往人工智能的轨道,同时他也为百度留下了宝贵的精神财富。今天我们将陆奇曾经的一篇演讲重新发布出来,回顾陆奇在百度的这段时间里,如何贯彻自己成为一个优秀的工程师的理念。 一位工程师,如何才能称得上优秀?除了写得一手好 Code,什么样的 阅读全文
posted @ 2018-05-31 11:33 且听疯吟吖 阅读(266) 评论(0) 推荐(0)
摘要:题目: 解题思路: 0(M+n)的额外空间算法比较容易实现,实现代码如下: 阅读全文
posted @ 2018-05-10 17:05 且听疯吟吖 阅读(678) 评论(0) 推荐(0)
摘要:题目: 解题思路: 阅读全文
posted @ 2018-05-08 23:05 且听疯吟吖 阅读(546) 评论(0) 推荐(0)
摘要:题目: 解题思路: 异或从0到n进行异或得到结果val,再将val与数组中每个元素进行异或,即可得到结果。次题的解法类似一个1到n的数列中有一个数出现了两次,找出该数的解法一样。 代码如下: 解法二: 阅读全文
posted @ 2018-05-07 00:05 且听疯吟吖 阅读(487) 评论(0) 推荐(0)
摘要:题目: 解题思路: 用两个栈即可实现。 stack<char> left; stack<char> right; 将所有括号依次压入left栈中, 1.如果发现left栈顶为右括号,则将其压入右栈。 2.如果发现left栈顶为左括号,则查看left与right栈顶的括号是否匹配,如果匹配,则匹配的括 阅读全文
posted @ 2018-05-06 23:29 且听疯吟吖 阅读(193) 评论(0) 推荐(0)
摘要:题目: 解题思路: s[m][n] = s[m-1][n-1] + s[m-1][n]; 下一行的元素由上一行的元素两两相邻相加得到,最后再再两端加1即可。 阅读全文
posted @ 2018-05-06 23:18 且听疯吟吖 阅读(599) 评论(0) 推荐(0)
摘要:解题思路: 1.循环交换位,交换16次即可。第i位与第33-i位交换。 代码如下: 2.将该数所有的位顺序颠倒即可(移位方向相反),即将原来的100变为001. 阅读全文
posted @ 2018-05-06 23:14 且听疯吟吖 阅读(3199) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.移位操作,每次移动一位。比较两个整数的最后一位是否相等,得出结果。 2.转换为第44题,求数字中1个数; val = x^y; 求出VAL中1的个数即可。 代码如下: 阅读全文
posted @ 2018-05-06 23:08 且听疯吟吖 阅读(951) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.直接移位即可,右移32次,每次判断最后一位是否为1即可; 代码如下: 2.观察n&n-1,则将消除一位1. 阅读全文
posted @ 2018-05-06 23:02 且听疯吟吖 阅读(218) 评论(0) 推荐(0)
摘要:题目: 代码实现: 阅读全文
posted @ 2018-05-06 22:55 且听疯吟吖 阅读(2378) 评论(0) 推荐(0)
摘要:题目: 解题思路: 拿到本题,首先想到的是用循环解决该问题,实际提交代码后,超时。后来参考相关答案给出的结果,确实非常精简。 即如果该数能被3的n次方的最大整数整除,被该数即为3的幂。 3的n次方32位的最大整数为1162261467。 代码实现: 阅读全文
posted @ 2018-05-06 22:52 且听疯吟吖 阅读(146) 评论(0) 推荐(0)
摘要:题目: 解题思路: 代码实现: 阅读全文
posted @ 2018-05-06 22:47 且听疯吟吖 阅读(641) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.n同时被3和5整除输出“FizzBuzz”; 2.n只能被3整除输出"Fizz"; 3.n只能被5整除输出"Buzz"; 4.其他输出数字; 代码实现: 阅读全文
posted @ 2018-05-06 22:43 且听疯吟吖 阅读(590) 评论(0) 推荐(0)
摘要:题目: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素x推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: 解题思路: 使用两个栈,一个栈保存所有的操 阅读全文
posted @ 2018-05-06 22:35 且听疯吟吖 阅读(824) 评论(0) 推荐(0)
摘要:题目: 解题思路: reset操作: 记录下数组的原始位置,reset操作时,直接返回原数组的拷贝即可。 shuffle: 将数组中的每个数与数组中的随机位置进行交换即可。关键点在于如何找到随机交换的位置,并且保证概率相同。 及第i个数可能与数组中任意一个数进行交换。 int t = (i + ra 阅读全文
posted @ 2018-05-06 22:21 且听疯吟吖 阅读(121) 评论(0) 推荐(0)
摘要:题目: 解题思路: 本题简单,动态规划即可实现。由于不能允许相邻的房屋同时被打劫。则如果打劫了第i间房间,则第i-1间房间不能被打劫,设前i间房间打劫所得最大金额为dp[i]。 因此得到递推公式: dp[i] = max(dp[i-1],dp[i-2] + nums[i]); 代码如下: 阅读全文
posted @ 2018-05-06 20:14 且听疯吟吖 阅读(835) 评论(0) 推荐(0)
摘要:题目: 解题思路: O(N)的解法: 分治法: 阅读全文
posted @ 2018-05-06 15:13 且听疯吟吖 阅读(462) 评论(0) 推荐(0)
摘要:题目: 解题思路: 用后一天减去前天得到隔天的利润,然后将该题目转化为求最大子序列和的问题。 另外一种解法,当天的价格减去今天以前的股票最小值: 阅读全文
posted @ 2018-05-06 15:05 且听疯吟吖 阅读(2462) 评论(0) 推荐(0)
摘要:题目: 本题解题思路: 思考过程中考虑到可以用两个map来解决该问题,但发现比较麻烦,后自己写了一个解决方案: 核心数据结构: 用一个排序的双向链表来存储所有的key和key的计数,数列的计数从小到大。 如果返回最小计数的key,则返回队列中的头元素,如果返回最大计数的key,则返回队列的最末位的元 阅读全文
posted @ 2018-05-06 14:56 且听疯吟吖 阅读(790) 评论(0) 推荐(0)
摘要:解题思路: 利用递推公式dp[i] = dp[i-1] + dp[i-2].我们可以知道最后一步可以上一个台阶或者上两个台阶。 代码: 阅读全文
posted @ 2018-05-03 22:30 且听疯吟吖 阅读(1927) 评论(0) 推荐(0)
摘要:题目: 解题思路: 这道题目比较有意思,从表面上看肯定是用二分查找来计算,但是如何找到第一个错误的版本是个难点。用res记录下每次错误的版本。 类似于在一个已经排序好的数组中查找第一个比该数目小但最接近该数的值。此题目作为重点题目变形题目,平时需要多加练习。 代码如下: 代码: 阅读全文
posted @ 2018-05-03 22:25 且听疯吟吖 阅读(339) 评论(0) 推荐(0)
摘要:题目: 解题思路: 从数组的后边起,依次取最大的数据即可。 代码: 阅读全文
posted @ 2018-05-03 22:06 且听疯吟吖 阅读(189) 评论(0) 推荐(0)
摘要:题目: 解题思路如下: 每次取数组最中间的数据作为根节点,数组分为半部分和后半部分,前半部分构成BST的左子树,后半部分构成BST的右子树,依次递归。 代码如下: 阅读全文
posted @ 2018-05-03 22:04 且听疯吟吖 阅读(209) 评论(0) 推荐(0)
摘要:题目: 解题思路: 采用队列即可,按照层次依次将每层的节点入队列即可。 阅读全文
posted @ 2018-05-03 22:00 且听疯吟吖 阅读(172) 评论(0) 推荐(0)
摘要:题目: 解题思路: 递归 1.判断左孩子的值与右孩子的值相等,同时判断左子树和右子树是否都为镜像树。 源代码: 阅读全文
posted @ 2018-05-03 21:59 且听疯吟吖 阅读(132) 评论(0) 推荐(0)
摘要:题目: 1.递归: 满足左边的最大节点小于根节点,右边的最小节点大于根节点。 代码如下: 阅读全文
posted @ 2018-05-03 21:52 且听疯吟吖 阅读(173) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 递归即可,找到左子树的深度和右子树的深度,取最大的即可。 代码如下: 阅读全文
posted @ 2018-05-03 21:46 且听疯吟吖 阅读(136) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.快慢指针即可,快指针每次走两步,慢指针每次走一步。快指针追上慢指针,则表示有环。 阅读全文
posted @ 2018-05-03 14:10 且听疯吟吖 阅读(260) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.非递归。直接将链表中的元素拷贝到数组中,然后比较数组是否为回文数组即可。 2.找到链表的中间节点,从中间节点开始,对聊表的后半部分进行反转,比较链表前半部分和后半部分,是否元素依次相等即可。 阅读全文
posted @ 2018-05-03 14:09 且听疯吟吖 阅读(197) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.递归: 依次加入较小的元素到新的链接中去。 非递归: 阅读全文
posted @ 2018-05-03 14:04 且听疯吟吖 阅读(1241) 评论(0) 推荐(0)
摘要:题目: 1.解法: 递归实现,非常简单: 阅读全文
posted @ 2018-05-03 13:58 且听疯吟吖 阅读(188) 评论(0) 推荐(0)
摘要:题目: 1。解题思路: 快慢指针实现即可。快指针指向第N个节点。慢指针指向第一个节点,然后两个指针依次指向下一个节点,直到慢指针到达链表的末尾。 阅读全文
posted @ 2018-05-03 13:45 且听疯吟吖 阅读(167) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 找到目标节点的前一个节点即可。然后将前节点的next指针指向后节点的next节点。 代码如下: 阅读全文
posted @ 2018-05-03 13:42 且听疯吟吖 阅读(276) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 双层遍历循环即可,实现方法比较简单。 代码如下: 阅读全文
posted @ 2018-05-03 13:40 且听疯吟吖 阅读(193) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 统计字符串中数字的个数,并组成新的字符串,下一个循环继续统计新的字符串中的字符的个数。 阅读全文
posted @ 2018-05-03 13:37 且听疯吟吖 阅读(619) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 本题比较简单,直接查找比对即可。不用考虑KMP算法等比较复杂的算法。 代码如下: 阅读全文
posted @ 2018-05-03 13:26 且听疯吟吖 阅读(186) 评论(0) 推荐(0)
摘要:题目: 1,解题思路: 本题不算是特别难,但是一定要注意移除的问题,以及非法字符。本题写的完全没有错误不容易,测试用例中溢出的问题。 阅读全文
posted @ 2018-05-03 13:24 且听疯吟吖 阅读(1111) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 本题比较简单,直接取字符串的前后字母进行比对,如果相等则前进,否则返回错误。 阅读全文
posted @ 2018-05-03 13:21 且听疯吟吖 阅读(230) 评论(0) 推荐(0)
摘要:题目: 1,解题思路: 本题比较简单,直接统计两个字符串中128个字符出现的个数,然后就比较数量是否相等即可。 阅读全文
posted @ 2018-05-03 13:14 且听疯吟吖 阅读(231) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 关于本题解题思路很简单,直接统计相关的26个英文字母的个数即可,非常简单。 阅读全文
posted @ 2018-05-03 13:12 且听疯吟吖 阅读(436) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.本题比较简单。直接取出每一个位上的数字,然后再构成新的数即可完成题目要求。 源代码: 阅读全文
posted @ 2018-05-03 09:28 且听疯吟吖 阅读(221) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 本题非常简单,直接前后交换即可 阅读全文
posted @ 2018-05-03 09:26 且听疯吟吖 阅读(141) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.对其中的每一层进行旋转即可: 2.对矩阵进行转置,然后左右交换即可。 阅读全文
posted @ 2018-05-03 09:24 且听疯吟吖 阅读(1895) 评论(0) 推荐(0)
摘要:题目: 解题思路: 本题初看起来比较怪异,实际只需要判断数据是否合规即可。数独9*9要求每一列的数据为1到9,每一行的数据为1到9.每一个3*3的block也为数字1到9. 因此只需要判断列,行,块是否合法即可。具体该数独有没有解不必关心。 代码: 阅读全文
posted @ 2018-05-03 09:16 且听疯吟吖 阅读(2953) 评论(0) 推荐(0)
摘要:题目: 解题思路: 1.hash即可。将所有的数组插入到map中,然后 遍历数组nums[i],同时在map中查找target-nums[i]的元素。空间复杂度为O(N),时间复杂度为O(N); 2.双层循环遍历即可寻找nums[i] + nums[j] == target. 3.如果是排序好的数组 阅读全文
posted @ 2018-05-03 09:10 且听疯吟吖 阅读(774) 评论(0) 推荐(0)
摘要:题目: 1.解题思路: 本题比较简单,设置双指针即可,cur指向所有非零元素,next为遍历数组的下一个元素。将数组遍历完成后,即可完成相关的功能实现。 阅读全文
posted @ 2018-05-03 08:55 且听疯吟吖 阅读(175) 评论(0) 推荐(0)
摘要:题目如下: 1.解题思路: 这道题目非常简单,只是简单的进位即可。记住末尾的carry进位即可。 阅读全文
posted @ 2018-05-03 08:48 且听疯吟吖 阅读(256) 评论(0) 推荐(0)
摘要:题目如下: 解题思路: 1.用hash即可。将数组1中元素全部插入到hash列表中,然后对数组2中的每个元素进行查找即可。时间复杂度为O(n),空间复杂度为O(N)。 代码如下: 2.排序好的数组。对两个数组排序好的元素依次遍历即可找到两个数组中相同的元素。 C++代码如下: 阅读全文
posted @ 2018-05-03 08:44 且听疯吟吖 阅读(3128) 评论(1) 推荐(0)
摘要:题目: 解题思路: 1.题目中要求线性空间,最简单的则是将整个数组进行相与,最后的结果即为目标数。 代码如下: 2.可以用hash,统计每个数目的数量即可,找出出现一次的数。 阅读全文
posted @ 2018-05-02 18:06 且听疯吟吖 阅读(218) 评论(0) 推荐(0)
摘要:题目: 解题思路如下: 1.排序:按顺序遍历整个数组,如果发现有数组存在重复则返回结果 2.集合查找:如何集合查找发现有重复元素则返回true,否则返回false。 阅读全文
posted @ 2018-05-02 17:59 且听疯吟吖 阅读(1274) 评论(0) 推荐(1)
摘要:题目如下: 解题思路: 本题较为简单解题,解题思路如下: 1.每次向右旋转,一个数据,旋转K次即可。算法的时间复杂度为O(n)。代码如下: python: 2.数组全部反转,然后再依次反转前k个数据和最后n-k个数据: 代码如下: C++: 阅读全文
posted @ 2018-05-02 17:53 且听疯吟吖 阅读(3110) 评论(0) 推荐(0)