Android java 算法
C v lie
追求美好,阳光
展开
-
Android屏幕适配方案
目前比较流行的屏幕适配方案是今日头条适配方案和smallest width限定符适配方案 首先来说一下今日头条的屏幕适配方案: 简介:我们写UI界面的时候,都是使用dp作为单位,UI给出的设计图也是以dp为单位,比如UI给的图是宽x高为360x640dp的。那么我们为了达到在所有手机上都能不变形的展示UI图,那么我们所有的手机都要是宽x高 = 360 x 640dp,很显然,实际情况不是这样的,因...原创 2020-04-17 20:52:27 · 431 阅读 · 0 评论 -
算法题:按之字形打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 import java.util.ArrayList; import java.util.Stack; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right...原创 2019-03-16 21:15:56 · 204 阅读 · 0 评论 -
剑指Offer题目----二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示 public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); ...原创 2019-04-16 11:02:10 · 153 阅读 · 0 评论 -
算法题:只遍历一次,寻找链表中倒数第K个节点(单向链表)
为了能够遍历一次就能找到倒数第K个节点,可以定义两个指针 1.第一个指针从链表头指针开始遍历,向前走k-1步,第二个指针不动。 2.从第k步开始,第二个指针也开始从链表头指针开始遍历 由于两个指针的距离保持K-1,当第一个指针到达链表的尾节点时,第二个指针指向的正好是倒数第k个节点 public static Node FindKthToTail(Node head,int k) { ...原创 2019-05-26 14:55:33 · 1633 阅读 · 1 评论 -
排序算法学习
/** * 快速排序时间复杂度为n*lgn * 不稳定排序算法 */ public static void quickSort(int[] a,int l,int r) { if (l < r) { int i,j,x; i = l; j = r; x= a[i]; while (i < j) {...原创 2019-05-23 14:31:34 · 111 阅读 · 0 评论 -
算法题:输入一个链表,反转链表后,输出新链表的表头
public ListNode reverseListNode(ListNode head) { if (head == null) { return null; } ListNode next = null; ListNode pre = null; while (head != null) { next = head.next; head.next = pre; pre = head; hea...原创 2019-05-28 21:16:04 · 796 阅读 · 0 评论 -
剑指offer算法题----定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 import java.util.Stack; public class Solution { private Stack<Integer> stack = new Stack(); private Stack<Integer> minStac...原创 2019-06-20 21:12:39 · 183 阅读 · 0 评论 -
剑指offer算法题----顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. import java.util.ArrayList; public class Solution { pub...原创 2019-06-21 16:00:59 · 116 阅读 · 0 评论 -
剑指offer 算法题 :二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5 /** public class TreeNode { int val = 0; TreeNode left = null; Tree...原创 2019-06-21 16:45:08 · 127 阅读 · 0 评论 -
Android 自定义轮播图(Banner)
先上图看效果: 知识要点: 轮播图是怎么做到无限循环的呢 让ViewPagerAdapter里面的getCount返回MAX_VALUE,instantiateItem方法中,获取图片的时候,让position % drawableList.size(),来得到真实值 @Override public int getCount() { return Integer.MAX_VA...原创 2019-03-11 17:04:45 · 952 阅读 · 0 评论 -
算法题:把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 public class Solution { ArrayList&lt;ArrayList &gt; Print(TreeNode pRoot) { ArrayList&lt;ArrayList&gt; list = new ArrayList(); if(pRoot == null) return list; ArrayList...原创 2019-03-16 19:57:01 · 191 阅读 · 0 评论 -
JAVA知识总结(一)
1.乐观锁 CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其他线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。 实现原理:如果内存位置V的值与操作线程预期原值A的值相匹配,那么处理器会自动将该位置更新为新值B,否则处理器将不做任何操作。CAS有效的说明了“我认为该位置应该包含值A,如果包含该值,则将B放到这个位置上...原创 2019-01-29 10:06:54 · 178 阅读 · 0 评论 -
Android apk打包流程
1.任何一个apk的运行都需要一个签名, 测试和开发阶段,开发工具会自动生成一个debug key来为应用签名;当应用要发布的时候,需要一个release key来为应用签名。 2.为什么要给Android应用程序签名? 这样做的根本原因是Android系统需要一个机制,保证以下几点: 1). 拿到一个应用的安装包,能够知道作者是谁 2). 当应用更新时,能够检测是不是作者本人提交的 3). 应用...原创 2019-01-30 14:08:17 · 10215 阅读 · 0 评论 -
Retrofit源码解密之----------动态代理
写在前面的话 Retrofit是开源的网络请求框架,是目前最火的框架之一,也是求职面试之中被提问的比较多的知识点。最近抽了点时间阅读了一下Retrofit源代码,给大家分享一下 public &lt;T&gt; T create(final Class&lt;T&gt; service) { //判断service是不是个接口 Utils.validateServiceInter...原创 2019-03-08 22:21:25 · 210 阅读 · 0 评论