自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Android面试(下篇)

1,java里queue中的add方法和offer方法有什么区别?答:区别:两者都是往队列尾部插入元素,不同的时候,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false。2,...

2018-10-10 05:24:41 249

原创 第四章递归和动态规划(一)

1,斐波那契数列问题的递归和动态规划补充题目1:给定整数n,代表台阶数,1次可以跨2个或者1个台阶,返回有多少种走法。举例:n=3,可以三次都跨一个台阶;也可以先跨2个台阶,再跨一个台阶;还可以先跨1一个台阶,再跨两个台阶。所以有三种方法。补充题目2:假设母牛每年生1头小母牛,并且永远不会死。第一年有1只成熟的母牛,从第二年开始,母牛开始生小牛。每只小母牛3年之后成熟又可以生小母牛。给定整数...

2018-08-25 09:59:50 255

原创 java函数式编程(二)Lambda表达式

"lambda表达式"(lambda expression)是一个匿名函数,lambda表达式是基于数学中符号而得名,是一个匿名函数,即没有函数名的函数。lambda表达式可以表示闭包。认识lambda。...

2018-08-25 09:57:45 263

原创 KMP算法

kmp算法初探,左神进阶班第一课。先理解一个字符串的最长匹配长度,前缀和最长后缀,如abcabcd,对于字符d,它的最长前缀的最长后缀的匹配长度是3,abc=abc。aaaaab,这个字符串的最长前缀和最长后缀匹配长度是4,aaaa和aaaa(第一个a开始和最后一个a往前,前缀不能包括最后一个字符,后缀不能包括第一个字符),人为规定0位置的最长匹配长度为-1,1位置人为规定为0。对于后面的每个位...

2018-08-15 19:40:40 161

原创 Manacher算法解析

Manacher算法是经典的算法,它的作用是给定一个字符串,返回str中最长回文字串的长度。举例,str="123",其中的最长回文字串是"1"、"2"、"3",所以返回1。str="abc1234321ab",其中最长的回文字串为&amp

2018-08-15 13:54:55 187

转载 Android 9正式发布

历时一年google于昨天发布了android 9.0正式版,并宣布系统版本android p被正式命名为"Pie"(馅饼)。此名并不意外,此前有关android 9.0系统的活动就是在3月14号举行的,而3月14号正是有名的"Pie"日(圆周率)纪念日。 android 9.0系统重大更新在正式版本推送前,google曾经陆续发布了三个预览版本,根据googl...

2018-08-08 03:14:49 754

原创 第八章数组和矩阵问题(一)

1,转圈打印矩阵题目:给定一个矩阵,请按照转圈打印的方式打印它。例如: 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。要求:时间复杂度O(1)。解答:矩阵分圈处理,在矩阵式利用左上角的坐标(tR,t...

2018-07-21 12:17:15 225

原创 第七章位运算

1,不用额外变量交换两个整数的值题目:如何不用任何额外变量交换两个整数的值。解答:给定a、b、c,以下三行代码就可以交换a和b的值a = a ^ b;b = a ^ b;a = a ^ b;如何理解呢?理解异或运算符的特点:一个数异或另一个数两次得到的还是这个数。2,不用任何比较判断找出两个数中较大的数题目:给定两个32位的整数a和b,返回a和b中较大的数。要求:不用任...

2018-07-20 11:05:24 131

原创 第六章大数据和空间限制

1,布隆过滤器及其应用此题在另一篇博客已经有介绍。2,只用2GB内存在20亿个整数中找到出现次数最多的数题目:有一个包含20亿个全是32位整型的大文件,在其中找到出现次数最多的数。要求:内存限制为2GB。 思路:要找出出现次数最多的数,通常的做法是使用哈希表对出现的每一个数做词频统计,哈希表的key是某一个整数,value是这个数出现的次数。就本题来说,一共有20亿个数,哪怕只是一...

2018-07-20 02:35:40 545

原创 认识布隆过滤器

百度百科关于布隆过滤器的概念:布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。基本概念:如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据...

2018-07-20 01:55:51 218

原创 第五章字符串问题(一)

1,判断两个字符串是否互为变形词题目:给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。请实现判断两个字符串是否为变形词的函数。举例:str1="123",str2="231",返回true;str1="123",s

2018-07-19 16:07:54 447

原创 java虚拟机读书笔记第一、二章

第一章都是科普性质的内容,就不写了。第二章 2.1 概述 对c、c++程序开发人员来说,在内存管理上,他们既是拥有最高权力的"皇帝"又同时是从事基础工作的"劳动人民",即既对每一个对象拥有"所有权&amp

2018-07-17 23:42:58 135

原创 第三章二叉树问题系列(二)

10,调整搜索二叉树中两个错误的节点11,判断t1树是否包含t2树全部的拓扑结构题目:给定彼此独立的两颗树头节点分别为t1和t2,判断t1树是否包含t2树全部的拓扑结构。思路:如果t1中某棵子树头节点与t2头节点的值一样,则从这两个头节点开始匹配,匹配的每一步都让t1上的节点跟着t2的先序遍历移动,每移动1步,都检查t1的当前节点是否与t2的当前节点的值一样。如果匹配当中发现不相等的情况就返...

2018-07-14 17:41:41 303

原创 第三章二叉树问题系列(一)

1,分别用递归和非递归方式实现二叉树的遍历题目:要求用非递归和递归方式分别按照先序、中序、后序遍历二叉树;约定先序遍历顺序为:根、左、右,中序:左、中、右,后序:左、右、中。递归方式较为简单,代码如下:public static void preOrderRecur(Node head) { if (head == null) { return...

2018-07-13 23:46:23 181

原创 第二章链表问题算法(一)

1,打印两个有序链表的公共部分题目:给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。解答思路: 1,如果head1的值小于head2,则head1往下移动 2,如果head2的值小于head1,则head2往下移动 3,如果head1的值与head2的值相等,则打印这个值,然后head1与head2都往下移 4,head1或head2有任...

2018-07-11 01:32:43 295

原创 第一章栈和队列算法

1,设计一个有getMin功能的栈,概念:在实现基本的栈的功能上,再实现返回栈中的最小元素的操作。要求:pop、push、getMin的时间复杂度都是O(1)。设计的栈类型可以使用现成的栈结构。思路:在设计上我们使用两个栈,一个栈用来保存当前的元素,其功能和一个正常的一样,记为stackMin。具体实现方式如下:假设当前数据为newNum,先将其压入stackData栈,然后判断stackM...

2018-07-08 21:57:08 219

原创 安卓基础知识点

standard,singletop,singletask,singleinstance。第一行代码(第二版)关于activity启动模式知识点。可以在配置文件中通过<activity>标签指定活动的启动模式。standard默认的启动模式,在不进行显式指定的情况下,所有活动都是自动使用这个模式,在这个模式下,每当启动一个新的活动,它就会在返回栈(安卓中保存活动的栈)中入栈,并...

2018-07-01 12:43:48 146

原创 java switch语句支持string类型原理

java7以后,switch语句可以用在string类型上,从本质上讲switch对字符串的支持,其实底层也是int类型的匹配。它的原理如下:通过对case后面的string对象调用hashcode()方法,得到一个int类型的hash值,然后用这个hash值来唯一标识这个case。在匹配的时候,首先调用这个字符串的hashcode方法,得到一个hash值(int型),用这个hash值来匹配所...

2018-03-28 16:04:16 1608

转载 volatile关键字

volatile关键字的掌握是java面试常见的知识点。这涉及到java的内存模型(JMM),java并发编程的东西。具体而言,被volatile修饰的的共享变量具有以下两点特性:1,保证了不同线程对该变量操作的内存可见性,2,禁止指令重排序。内存可见性:先从java内存模型说起,java虚拟机规范试图定义一种java内存模型(JMM)来屏蔽各种硬件和操作系统的内存访问差异,让java程序...

2018-03-27 23:37:39 116

原创 java八大排序算法

学习左程云算法课初级班1,归并排序,这是分治的思想,例如有一个数组,先将左半部分排好序,再将右半部分排好序,最后再将两边的数通过一个辅助数组将它们逐个放到辅助数组里面,这个过程中逐渐比较两边头位置的数的大小。求一个数组的中间位置,可以int mid = l + ((r - l) >> 1);右移运算(位运算)速度快一些。public sta...

2018-03-22 18:03:23 438

原创 Android第一行代码(第二版)

3.5最常用和最难用的控件----ListViewListView非常常见,也是Android中最常见的空间之一,几乎所有程序都会用到,QQ聊天,刷微博,诸如此类。ListView用法也是比较复杂。下面以一个小项目来练习ListView。新建一个ListViewTest项目,默认设置。public class MainActivity extends AppCompatActivity {

2017-06-05 04:04:29 3501

转载 Java中super和this关键字用法

这是从csdn摘抄过来。 this:可以理解为代表自身对象,指向对象本身的一个引用。 1,普通的直接引用2,局部变量和成员变量重名用this区分,如:class Person { private int age = 10; public Person(){ System.out.println("初始化年龄:"+age);} public int GetAg

2017-06-05 02:56:00 382

转载 Android图片加载框架最全解析(一),Glide的基本用法

Android图片加载框架最全解析(一),Glide的基本用法 - 郭霖的专栏 - 博客频道 - CSDN.NET

2017-06-03 04:58:56 1838

转载 Integer的127和128

有如下代码:Integer a = 127,b = 127;Integer c = 128,d = 128;Sysout.out.println(a == b);//trueSystem.out.println(c == d);//false```这是什么原因?Integer i = 127;的时候会进行自动装箱的操作,就是把基本数据转换成Integer对象,而转换成Integer对象用的

2017-05-19 03:07:22 993

原创 大事件(Kotlin)

这个事情要单独说一下,谷歌宣布Kotlin成为了android官方开发语言。

2017-05-18 20:52:02 270

转载 Google I/O大会相关

昨晚(准确来说应该是今天凌晨)看了IO大会的直博,有点欣慰,现在已经可以听懂他们讲的话了,我想多听听以后多看英语新闻应该问题不大,还是要长期的去接触。当然今年的重点是AI,很好理解,实际上现在互联网正式进入AI时代,各大科技巨头都纷纷布局AI,国内百度公司更是走在前面,其在AI和深度学习的积累可谓相当之深,谷歌自然也是,今年的IO大会AI毫无疑问是重头戏,不过安卓也不容忽视。主要讲讲安卓(来自于微

2017-05-18 18:28:25 363

转载 java一些面试题集锦

12,java创建线程有几种方式?有三中方式可以创建线程: 1,继承Thread类 2,实现Runnable接口 3,应用程序可以使用Executor框架来创建线程池 一般来说实现Runnable接口方式更受欢迎,因为这不需要继承,java只支持单继承,在应用已经设计成继承了别的类的时候,就只能实现接口来提高扩展性了。同时,线程池也是非常高效的。13,线程状态就绪(Runnable

2017-05-15 21:42:57 314

原创 Android(探究活动)

上一章,已经创建了第一个Android项目,现在来学习Android的活动。2.1 活动是什么?活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于跟用户进行交互,一个应用程序中可以有零个或多个活动,但不包含活动的应用程序就很少,比如说支付宝的快捷支付服务就是这样的程序。2.2活动的基本用法手动创建一个活动,上一章的HelloWorldActivity是

2016-12-23 00:19:39 358

原创 java

多线程第二种实现方式的好处是什么?实现了Runnable接口,比如一个student类继承了Person类,又实现了runnable接口,Runnable仅仅是将线程任务进行了对象的封装。 Runnable r = new Student(); Thread t = new Thread(r); 实现Runnable接口的好处:

2016-12-22 15:44:50 262

原创 c语言,循环的应用

f(n) = 1 + 1/2 + ……+1/n int n; int i; double sum = 0.0; scanf("%d",&n); n = 10; for(i=1;i<=n;i++){ sum += 1.o/i; } printf("f(%d)=%f",n,sum); return 0;如果是f(n)

2016-12-19 00:45:29 433

原创 线程状态

线程的状态被创建new Thread运行 正在执行中,具备cpu的执行资格同时具备cpu的执行权。 消亡冻结 从运行到冻结是释放了执行权和执行资格。wait() 、notify()。sleep()临时阻塞状态 具备cpu的执行资格 不具备cpu的执行权多线程的最大特点就是随机性。二、多线程的安全问题 1,线程任务中在操作共享的数据

2016-12-17 23:19:49 190

原创 java多线程(第二种方式)

实现runnable接口。 class Demo implements Runnable{ private String name; Demo(String name){ this.name = name; } public void run(){ for(int x=1;x<=2

2016-12-17 22:04:00 296

原创 java(多线程)

一、多线程概述先了解进程。 进程:正在进行中的程序(严格讲是一个应用程序启动后在内存中分配的那片空间,比如说启动QQ,)。 线程:进程中的一个执行单元,一个线程中可以有多个线程(至少一个),这个程序就称为多线程程序。 程序启动了多线程,有什么应用? 可以实现多部分程序同时执行,也叫并发执行。进程其他定义 进程是

2016-12-17 18:42:28 189

原创 c语言(循环)

用一角、两角、五角这三种面值的钱组合成若干元。 #include <stdio.h> int main(){ int x=2; int one,two,five; for(one=1;one<x*10;one++){ for(two=1;two<x*10/2;two++){ for(

2016-12-17 15:44:46 300

原创 c语言(判断素数)

int x; printf("请输入x的值:%d",x); int i; int isPrime; for(i = 2,i < x;i++){ if(x % i == 0){ isPrime = 0; break;//跳出循环 } } if(isPrime == 1){

2016-12-15 16:49:48 582

原创 c语言(循环)

循环求积,或者求和 求积: int n; scanf("%d",&n); int fact = 1; int i = 1; for(i = 1;i <= n,i++){//用到了for循环 fact *= i; } printf("%d!=%d\n",n,fact); return 0;求和: int n;

2016-12-15 15:40:07 474

原创 c语言(数位数)

循环小程序,数位数小程序 例如:输入一个整数,输出它的位数 int x; int n = 0;//n用来记录位数 scanf("%d",&X); n++; x /= 10; while(x > 0){ n++; x /= 10; } printf("%d",n); return 0;

2016-12-15 15:14:39 2193

原创 c语言

找零小程序改进int main{ int price = 0; int bill = 0; printf("请输入金额:"); scanf("%d",&price); printf("请输入票面:%d",bill); scanf("%d",&bill); if(bill > price){ printf("找您%d元",bill

2016-12-15 12:37:20 274

原创 c语言小程序

计算两个数平均值int a,b;scanf("%d %d",&a,&b);double c = (a + b) / 2;printf("%d和%d的平均值为:",a,b,c);运算符优先级: 单目运算符很高,算术运算符次之,再赋值运算符。交换小程序,比如交换两个整数的值int a,b;a = 3;b = 4;int temp = a;a = b;b = temp;

2016-12-14 22:30:35 406

原创 c语言基础

一、辗转相除法#include <stdio.h>int main(){ int u = 32; int v = 26; while(v != 0){ int temp = u % v; u = v; v = temp; } printf("%d",u); return 0; }辗转相除法,可以求两个数的最

2016-12-14 16:24:45 441 1

空空如也

空空如也

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

TA关注的人

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