自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 Maximum Subarray Difference

该题的思路是使用辅助数组来保存从前向后和从后向前到当前位置的最大最小值,这样就可以通过每一个位置处的最大最小值来计算该位置的结果,最后在所有结果中选出最大的值即可。 int maxDiffSubArrays(vector nums) { // write your code here int size = nums.size(); /

2015-07-31 17:26:34 868

原创 nexus7刷机流程

成功nexus7刷机步骤:1、在驱动网站:https://developers.google.com/android/nexus/drivers#flokot49h 上下载相关驱动(根据设备版本),现在用的是:“Android 4.4.2 (KOT49H)”;2、按“http://blog.csdn.net/june5253/article/details/8560557”给的

2015-07-21 11:33:28 3323

原创 Lowest Common Ancestor of a Binary Tree

做到这个题才发现之前做的关于二叉检索树的写复杂了,其实可以直接根据二叉检索树的特点进行判断(从树根开始,某一节点的值大于待搜的两个节点则在左边找,小于待搜的两个节点则在右边找,否则返回该节点即可)。这道题倒是必须用DFS来解决。class Solution {public: //DFS代码 void findNode(TreeNode* root, TreeNode* toF

2015-07-18 22:08:17 520

原创 Delete Node in a Linked List

该题的难点在于单链表没法删除节点,那么就只能将该节点后续所有节点的值前移覆盖当前节点的值。需要注意的是在移动到倒数第二个节点的时候在覆盖其值之后需要将其下一个节点指向 nullptr。class Solution {public: void deleteNode(ListNode* node) { if(node == nullptr) retur

2015-07-18 16:53:52 626

原创 Android 输入管理服务-输入事件向具体应用的分发

输入管理服务接收到输入事件,对输入事件进行处理之后会把输入事件分发到具体的应用中(如WMS、壁纸服务等)去处理的,这里涉及到了JNI从C++层向JAVA层的调用。具体流程如下图所示:

2015-07-16 09:01:21 973

原创 Rectangle Area

该题比较简单,首先求重叠区域的面积,让后从总面积减去重叠区域的面积。class Solution {public: int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { int M = A > E ? A : E; int N = B > F ? B : F;

2015-07-14 13:14:05 760

原创 Invert Binary Tree

该题比较简单,递归交换每一个节点的左右子树即可。class Solution {public: TreeNode* invertTree(TreeNode* root) { if(root == NULL) return NULL; TreeNode* tmp = root -> left; root -> le

2015-07-14 13:07:23 589

原创 Basic Calculator II

该题和前面的"Basic Calculator"的处理方法一样,只是加入了对"*"、"/"两种运算的支持。class Solution {public: bool isnum(char c){ if(c >= '0' && c <= '9') return true; return false; }

2015-07-14 13:02:04 551

原创 Basic Calculator

该题的思路很明确就是将中缀表达式转换为后缀表达式,然后通过后缀表达式来求值。class Solution {public: int calculate(string s) { vector postorder; stack ccache; stack icache; string tmp;

2015-07-14 12:56:56 677

原创 Android 输入管理服务-输入事件到达之后的处理流程

接上一篇博客“Android 输入管理服务启动过程的流程”,这两天分析了Android 输入管理服务接收到输入事件之后的处理流程,具体流程如以下两图所示:接下图

2015-07-13 22:41:32 862

原创 Summary Ranges

该题算是一个细节实现题,比较简单,思路是定义两个索引分别定义为连续序列开始和结束的索引,循环找连续的段,进行处理直到全部序列都处理完为止。class Solution {public: vector summaryRanges(vector& nums) { int len = nums.size(); vector result; i

2015-07-12 21:04:21 468

原创 Kth Smallest Element in a BST

该题的思路很简单,就是对BST进行先序遍历,找到第k个数的时候返回。这里借助栈用迭代实现,递归的代码更简单,没有尝试。class Solution {public: int kthSmallest(TreeNode* root, int k) { stack cache; TreeNode *point = root; TreeNode

2015-07-12 16:30:36 654

原创 Palindrome Linked List

该题目的要求是判断一个单链表是否是回文链表,题目的难度在于O(n)时间和O(1)空间的限制。由于单链表不能反向访问,所以不能直接通过原来的链表来判断,解题的思路是首先对原来的链表的前半部分进行判断,然后进行判断(如链表为“12344321” 反转之后为“43214321”)。想到这一点之后的实现就非常简单了,完整的代码如下所示:class Solution {public: Li

2015-07-12 16:26:36 775

原创 Power of Two

该题最简单的办法是迭代除2直到不能再除,看余数是否为1,更好的办法暂时没有想到。class Solution {public: bool isPowerOfTwo(int n) { if(n < 1) return false; while(n > 1){ if(n % 2 == 1)

2015-07-12 10:19:59 519

原创 Implement Queue using Stacks

该题算是比较简单的,思路是定义两个栈,一个做为入栈,一个做为出栈。入队列的话直接将元素压入入栈,出队列的话首先判断出栈是否为空,为空则将入栈中的元素依次压入出栈中,再从出栈弹出元素。class Queue {public: // Push element x to the back of queue. void push(int x) { instack.pu

2015-07-12 10:03:49 556

原创 Lowest Common Ancestor of a Binary Search Tree

题目很好理解,即求一棵二叉树中两个节点的公共祖先。我的解题思路是使用DFS,求出从根节点到两个待查节点各自的路径,然后从头开始比较两个路径,最后一个相等的节点即为公共祖先节点。完整代码如下。class Solution {public://DFS代码 void findNode(TreeNode* root, TreeNode* toFind, vector &curPath

2015-07-12 01:04:16 508

原创 Android 输入管理服务启动过程的流程

接上一篇"Android窗口管理服务相关对象的创建流程",这两天分析了一下Android 输入管理服务启动过程的流程,流程图如下所示。

2015-07-12 00:14:53 1561

原创 Android窗口管理服务相关对象的创建流程

最近在分析Android的窗口管理服务,现在分析完了窗口管理服务相关的对象的创建过程,为了清晰的表示窗口管理服务相关对象的创建过程,就整个创建过程整理了流程图如下所示。        该图是基于 Android4.4 分析出来的,现在贴出来,希望能够帮到对输入管理服务(IMS)有兴趣的人。也希望和大家就输入管理服务交流。

2015-07-09 23:56:45 734

原创 Regular Expression Matching

        题目要求这里不再赘述,有两点点需要注意:一、"*" 所代表的含义是代表其之前的字符的0个或多个重复。如 “a*” 代表 'a' 后面跟0个或者多个字符 'a';二、用 C++ 实现的话后面函数的入参是 string 型,在这里按字符处理的时候有诸多不便,可以转换为 char * 进行处理。class Solution {public: bool isM

2015-07-09 23:52:45 492

WifiDisplay总结报告

基于Android源码对Android WifiDisplay技术的详细介绍,包括:加入WifiDisplay之后Android的显示系统的工作流程,SurfaceFlinger与WifiDisplay相关介绍,以及android源码中Source端和Sink端代码的实现介绍

2015-03-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除