自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yimingyu的博客

Android开发、Ionic+AngularJs+Cordova开发

  • 博客(34)
  • 收藏
  • 关注

原创 【Leetcode】两个有序数组的中位数

两个有序数组的中位数二分查找法详细理解

2016-12-23 00:18:32 6814

原创 【剑指offer】计算1至n中整数k出现的次数

计算1至n中整数k(包括0)出现的总次数

2016-12-19 15:02:23 924

原创 【数据结构与算法】堆排序

【数据结构与算法】堆排序1、堆的性质 2、堆的调整规则3、堆的建立4、堆排序

2016-11-11 21:12:19 352

原创 【Android源码学习】关于@hide

在阅读SDK源码的时候经常看到@hide隐藏的方法,我们只能通过反射来调用它,但是一直不太清楚SDK是怎么做到的,是通过权限控制吗? Android @hide 详解 看了这篇文章,才知道跟我理解的不一样,它没有权限控制那么复杂。简单来说编程工具(AndroidStudio等)是引用SDK中的android.jar,这个包里没有hide和internal相关的类、属性和方法的,它是个删减版。当a

2017-02-17 13:03:39 1057

原创 【Android问答】Android面试常问问题

今年秋招颗粒无收,校招公司基本上都跪在了算法,社招小公司因为面试没有体现出深度表现平平,自然也因为期望太高而告吹。仔细总结一下,发现主要原因是没有模拟问答练习,在面试时不能牢记于心倒背如流,自然也不能达到好效果了。 下面这些问题基本是面试必问,但是网上的答案都是通篇大论,没有人给出篇幅适中而又不失水准的“答案”。 一、Android中View的绘制流程。 答:总的来说分为测量、布局和绘制。

2017-01-06 18:12:20 522

原创 【数据结构与算法】字符串匹配算法

字符串匹配算法:KMP、BM和Sunday

2017-01-03 10:41:45 3728

原创 【数据结构与算法】实现四则运算

利用位移操作实现整数的加减乘除

2016-12-29 16:40:10 1877

原创 【Android源码学习】View的layout和draw流程

关于View的layout和draw流程,各路大神们的博客都讲解的很清晰,View绘制流程,本文仅写出自己的理解和总结,方便加强印象。 一、layout measure是通过父布局推荐的大小确定各个子View最终的大小,同样,layout通过父布局推荐的位置确定各个子View最终的位置。它的入口是ViewRootImpl的performLayout,ViewGroup.layout(DecorV

2016-12-26 17:47:21 512

原创 【Java基础】变长参数、Object[]类别、System.out.println异常

变长参数、Object[]类别和System.out.println异常

2016-12-24 21:40:30 601

原创 【Android源码学习】View的measure流程

我们都知道View的绘制主要有三个流程:测量、布局和绘制。但是面试时却不知道如何去详细介绍,这是因为对其内部原理和机制不够熟练或者理解不够透彻。 一、View的测量 带着问题学习Android中View的measure测量和Android View测量过程源码解析这两篇博文对measure方法讲解的非法详细。 总结一下,测量类似于给对象分配空间,measure方法类似于预分配,传入的参数值是父

2016-12-24 18:14:10 425

原创 【数据结构与算法】二叉树的遍历

二叉树的三序遍历、层次遍历、分层遍历和按之字形遍历

2016-12-20 13:10:22 430

原创 【数据结构与算法】单链表排序

以前一直没有考虑过对单链表的排序,直到遇到Leetcode 一、快速排序 单链表的快速排序需要用到快速排序的单向扫描法,总体思路是用一快一慢两个指针,快指针用来寻找小于key的结点,慢指针用来指向当前找到的较小结点应该存储的位置。 public static int partition(int[] nums,int start,int end){ int fast=star

2016-12-19 21:01:47 851

原创 【剑指offer】整数数组中重复的数字

数组a[n]中所有的数字都在[0,n)内,此O(n)方法可以找出所有重复的数值并不修改原数组

2016-12-02 13:09:34 347

原创 【剑指offer】按层和按之字打印二叉树

用两个栈实现按之字形打印二叉树

2016-12-02 12:47:11 391

原创 【Android源码学习】事件分发机制

关于Android事件分发机制,一直半清不楚。Android事件传递机制——这篇博客实验做的很好,不过对于dispatchTouchEvent的返回值解释错误。直到看到这篇博文,才有了比较清晰的认识Android事件分发流程——这篇博客图文较多便于理解但是没有涉及原理。这篇文章对原理讲解的比较清楚以伪代码的形式展示事件分发结果,配合第二篇博客效果非常好

2016-11-24 21:28:15 377

原创 【Android源码学习】应用启动过程

1、手机启动完成后,显示的桌面Launcher其实也是一个应用(它继承于Activity)。手机上所安装的用户app都会显示在Launcher应用的界面上,类似于文件浏览器。 2、当我们点击某一个应用图标时,触发Launcher的onClick事件,它根据点击的内容(文件夹或应用图标)来实施相应的操作。因为点击的是应用图标(相于当快捷方式),所以执行的操作是启动这个应用。 3、启动应用时强制添加

2016-11-24 14:50:18 408

原创 【Android源码学习】子线程更新UI

一直都认为子线程不能更新UI,觉得这是Android系统规定的,所以也没想过为什么。直到今天刷题时看到一个言论说在onResume之前子线程是可以更新UI的。经测试,确实如此,并且在onResume时也可以用子线程更新UI,在onPause或点击时都会报错。

2016-11-22 18:42:33 325

原创 【剑指offer】二叉搜索树转有序双向链表

这一题实际上就是中序遍历二叉树,并且修改指针。

2016-11-21 12:07:57 251

原创 【剑指offer】包含min函数的栈

首先第一个想到用一个临时变量何存当前栈中的最小值。每次入栈时,先比较入栈元素与当前最小值确定是否更新。但是如果此时出栈一个元素,并且栈内不为空时,min函数就无法工作了。也就是说我们必须保存入栈前的最小值序列,以保证出栈后能恢复最小值。很容易想到也用一个栈来保存最小值。public class

2016-11-18 17:36:53 245

原创 【剑指offer】顺时针打印矩阵

主要思想是递归打印最外面一圈,打印每一圈时按照顺时针方法,先顶部从左至右,然后右边从上至下,然后底部从右至左,最后左边从下至上。 思路简单,但是实现起来困难,主要是打印次数的判断,以及矩阵只有一行或只有一列或只有一个数时的判断条件。

2016-11-18 16:48:33 324

原创 【剑指offer】二叉树的子树

二叉树的子树

2016-11-18 14:44:05 338

原创 【剑指Offer】反转单链表

反转单链思路简单,但是需要仔细实现,不能遗漏细节,不自己独立写一遍永远不知道自己错在哪。 public static ListNode reverseList(ListNode head) { if(head==null) return null; ListNode pre=null; ListNode cur=head; Lis

2016-11-18 11:28:31 350

原创 【剑指offer】队列和栈的互相实现

队列先进先出,栈先进后出。 两个栈实现队列,两个队列实现栈

2016-11-17 15:05:06 363

原创 【数据结构与算法】基数排序

基数排序是一种多关键字排序。以扑克牌排序为例,每张扑克牌有两个“关键码”:花色和面值,花色的权重大于面值,如红桃A小于黑桃2。 通常有最高位优先MSD (Most Significant Digit first)和最低位优先LSD (Least Significant Digit first)两种实现方式。

2016-11-16 22:09:47 826

原创 【数据结构与算法】桶排序

桶排序的思想是划分区间(桶),后一个区间中的数总是比前一个区间的大。例如按薪水排序,处于月薪数W元区间的任何一个人的薪水肯定比处于月薪数K元区间的所有人多。 分好区后,再选择某一种算法对这个区内的元素排序。最后根据区的优秀级依次取出元素,这样整个序列就有序了。

2016-11-16 11:08:28 459

原创 【数据结构与算法】快速排序

快速排序也使用了分治策略,它每次将待排序列分成两部分,前一部分的元素值都不比后一部分的元素值大。也就是前一部分都不比某个数大,后一部分都不比这个数小。这个基准的选择会直接影响快速排序的效率。 划分 固定第一个数为基准,以{5,4,3,5,6,12,11,-3,4,5,7}为例,用临时变量保存5,相当于挖了个坑,然后从后往前找到第一个小于基准的数,填入当前坑,原位置形成新坑,然后从前往后找到第一

2016-11-15 15:27:55 364

原创 【数据结构与算法】归并排序

归并排序的利用了分治的思想,将待排序列分为前后部分,分别进行归并排序,然后将这两个有序的部分合并使之达到整体有序。 合并   因为两个待合并子序列都是已经排序的,它们的第一个值在其序列中永远是最小(最大)的,故而整体最小(最大)的值必然是这两个中的一个,就像年级的第一名,永远是从各班的第一名中产生。   因而我们可以每次比较两个待合并序列的第一个,选取其中一个值放入到结果中,并从原序列中移除。

2016-11-14 10:44:49 426

原创 【数据结构与算法】计数排序

计数排序只适用于分布较密的整数,它的思想是将元素当作辅助数组的下标,对应的值代表元素出现的次数。因为数组下标从小到大不需要排序,即而当前下标和之前下标的次数累加和即此下标在原数组中的位置。 注意:当数组元素分布广泛时会造成极大的空间浪费。传入参数min和max是数组中的最小值和最大值,如果不知道,可以传入一个大概的值,只要分别比实际最小值小和实际最大值大就行 public static in

2016-11-11 22:20:49 480

原创 【数据结构与算法】选择排序

选择排序的思想是每次从未排序数组中选出最小或最大的数,与当前待插入位置交换。

2016-11-11 21:50:47 458

原创 【数据结构与算法】冒泡排序

冒泡排序的思想是,从前往后(或从后往前)扫描,每找一个逆序对,就将它更正过来,这样每一轮总可以找到一个最大值或最小值。

2016-11-11 21:42:18 517

原创 【钻牛角尖】静态接口或静态抽象方法

Java不支持静态接口方支或者静态抽象方法,父类如何限制子类必须要实现某个静态方法

2016-11-11 16:26:58 400

原创 【数据结构与算法】希尔排序

希尔排序又称缩小增量排序,实质上是分组直接插入排序。

2016-11-11 15:19:04 399

原创 【数据结构与算法】二分查找

二分查找的思想是在已经排序(升序)的数组中,如果要查找的数比中位数小,那么其位置只可能在左半部分,相反只能在右半部分。这样每次把查找区间缩小一半,比顺序查找效率快得多。非递归写法: public static int binarySearchInAscLooply(int[] nums,int start,int end,int t){ if(nums==null||nums.leng

2016-11-11 11:30:30 494

原创 【数据结构与算法】插入排序

假设数组a[N]已经排好序,现在需要插入一个新的数。假设我们将数插入某个位置,那么这个位置之后的所有元素都必须后移一位。 public static void straightInsertSort(int[] nums,int start,int end){ if(nums==null||nums.length<=end) throw new IllegalArgumentExceptio

2016-11-10 15:16:32 291

空空如也

空空如也

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

TA关注的人

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