自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法题2020

算法题2020旋转图像旋转图像思路:1 2 34 5 67 8 9从最外圈往最内圈依次移动。对于每一圈,每四个数字为一组,例如(0,0),(2,0),(2,2),(0,2),它们之间相互替换。具体表现为,当横坐标x为0时,可以分为两组,第一组从(0,0)开始依次顺时针90度替换,第二组从(0,1)开始顺时针九十度替换。也就是说对于最外圈,1,3,9,7顺时针...

2020-02-03 20:52:21 272

原创 2020学习计划

2020学习计划C++基础C++项目JAVA基础Android相关PIT*JS算法&数据结构计算机网络操作系统C++基础C++标准库。多线程。预编译->编译->运行过程。Linux基础。C++试题。其他值得注意的点。C++项目WCDMA OAM 基本结构,用到的技术。简单了解WCDMA OAM用到的协议。简单了解COAM与WCDMA OAM区别,做了...

2020-02-03 14:56:50 1462

原创 算法题

冒泡排序选择排序树型选择排序快速排序堆排序二分法查找重建二叉树两个栈实现队列斐波那契数列二进制中1的个数数值的整数次方调整数组顺序使奇数位于偶数前面链表中倒数第k个结点二叉树的遍历不使用*和/完成两个数的乘除法反转链表...

2018-03-15 21:37:37 185

原创 C++编译过程

C++编译过程基本过程预编译:编译:链接:静态链接动态链接基本过程基本过程为:预编译 -> 编译 -> 链接预编译:替换所有的宏处理所有的预编译指令例如:#ifdef处理#include,将包含的文件插入目标文件中。其中自己定义的文件一般用#include“xxx.h”,表示从程序当前目录寻找文件。而库文件则一般用#include,表示从系统目录寻找文件。过滤所有的注...

2020-02-26 16:11:34 142

原创 计算机网络知识点

计算机网络知识点

2020-02-19 16:03:29 244

原创 C++重要知识点

C++重要知识点右值引用

2020-02-18 19:13:45 168

原创 C++中的强制类型转换

1.const_cast<>(expression):用于去除const,volatile和__unaligned属性。只能作用于指针或者引用。例如:const int a= 0;int b = const_cast<int>(a);//不对的const int *pi = &a;int * pii = const_cast<int *>pi;...

2018-05-29 16:41:30 147

原创 Java和C++中的volatile

1.Java中的volatile:在Java内存模型中,线程共享的资源放在主存中,每个线程同时拥有自己的本地内存。而本地内存中存放了被该线程使用到的主内存变量的拷贝。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。由此可能导致线程间无法读取变量的最新状态。被volatile修饰的变量在修改时会被强制写到主存中,从而保证该变量对其他线程的可见性。2.C++中的volat...

2018-05-29 14:16:46 902

原创 C++线程同步的几种方式

1.临界区,通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。确保在某个时刻只有一个线程能访问数据。此时其他线程如想访问数据则会被挂起,直到当前线程离开临界区。临界区被释放后,其他线程继续抢占。2.互斥量,和临界区类似,可以保证同一时刻只有一个线程访问数据。类似java中的对象锁。成功获取互斥量的线程可以访问数据,其他线程将被挂起,直到当前线程释放互斥量。互斥量比临界区复...

2018-05-28 16:32:00 3633

原创 C++学习计划

  1.头文件和命名空间,对比java中的import。   2.内存结构,对比java中的堆,栈,方法区,程序计数器。   3.同步机制,对比java中的synchronized。   4.看一下有没有类似java中ConcurrentHashMap提供线程安全的容器。   5.重新回顾一遍C++语言本身。...

2018-05-24 14:20:08 392

原创 二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:遍历二叉树,记录每一条路线的深度并选出最大的。public class Solution { private int result = 0; public int TreeDepth(TreeNode root) { ret...

2018-04-22 22:30:45 137

原创 不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:不能用加减乘除就用循环:public class Solution { public int Add(int num1,int num2) { int temp = num2>0?num2:-num2; for(int i=0;i<temp;i+...

2018-04-22 21:53:50 130

原创 求1+2+3+...+n

题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:那么能想到的只能是递归了:public class Solution { public int Sum_Solution(int n) { if(n==1){ return 1; ...

2018-04-22 21:43:34 150

原创 和为S的两个数字

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路:将数组中的值两两进行比较,类似冒泡法,只不过换成比较和而不是比较两个数的大小。import java.util.ArrayList;public class Solution { public ArrayList<Integer&g...

2018-04-22 21:36:45 116

原创 第一个只出现一次的字符

题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 思路:遍历这个字符串,并记录每个字符出现的次数。import java.util.ArrayList;import java.util.Iterator;public class Solution { public int FirstNotRepeatin...

2018-04-22 14:03:00 110

原创 丑数

题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路:结果必然是由2,3,5组成,直接看代码:import java.util.ArrayList;public class Solution { public int GetUglyNumber...

2018-04-22 13:20:10 113

原创 把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:列出所有可能,并在列的同时记录出现的最小数。import java.util.ArrayList;import java.lang.Long;public class Solution { ...

2018-04-21 23:04:24 97

原创 关于javascript

一些零碎的知识W3C  W3C是指万维网联盟(World Wide Web Consortium)。是Web技术领域最具权威和影响力的国际中立性技术标准机构。== 和 ===  ===是严格运算符。   当符号两边数据类型不同时,直接返回false。   当符号两边数据类型相同并且是基本数据类型时,比较其值。   当符号两边数据类型相同是对象时,比较是否指向同一对象。...

2018-04-16 22:58:30 190

原创 记录子线程操作UI不报错的问题

  一次偶然的情况在Activity的onCreate方法中写了这么一段代码:tv1 = (TextView) findViewById(R.id.tv1); new Thread(new Runnable() { @Override public void run() { try { ...

2018-04-15 22:00:34 243

原创 关于Android屏幕刷新机制的一些总结

以下总结来自这两篇博客:   Android屏幕刷新机制   android屏幕刷新显示机制  1.一般来说人眼能分辨的最大帧数为60帧,即每秒60张图片或者屏幕每秒刷新60次。因此在安卓中有1000/60 = 16.6ms,即CPU/GPU要在16.6毫秒内完成一帧的处理,否则会出现卡顿感。   2.CPU/GPU和屏幕(Display)是这样配合的:CPU计算要绘制的内容,GPU...

2018-04-15 21:37:30 1061

原创 EventBus源码分析

  以下代码分析基于eventbus:3.1.1。   EventBus用于安卓模块间通信。下面来看一下它是如何实现的。   从入口开始,首先注册EventBus,假设在Activity的onCreate()方法中注册(下文中的Activity均为注册EventBus的组件)。EventBus.getDefault().register(this);  EventBus的getDef...

2018-04-14 18:07:55 134

原创 关于锁和synchronized

synchronized原理  java中的synchronized可以用来控制线程同步。   synchronized有三种用法:1.作用于普通方法。2.作用于类方法。3.作用域代码块。  其中作用于普通方法时其锁是该方法的this。作用于类方法时其锁是该类的class对象。作用于代码块时锁是指定的对象。   其实现线程同步的原理是每个对象的对象头中都保存了一个与该对象对应...

2018-04-14 14:39:07 302

原创 65536问题

  Android在安装apk文件时会验证dex,并优化生成odex。   在优化的过程中会把每一个类的方法id检索出来并放在一个链表中。但是这个链表的长度是用一个short类型来保存的。导致方法数不能超过65536个。   在Android系统中,对于一个应用来说,其实有两个ClassLoader,一个是SystemClassLoader,这个ClassLoader里面除了Java标准的类库...

2018-04-13 14:56:11 854

原创 关于集合的总结

TreeMap  TreeMap基于红黑树(二叉平衡树加二叉搜索树)。   TreeMap各项操作时间复杂度是O(logn)。   TreeMap的key必须实现compareable或者传入comparable。   遍历得到的结果是有序的(中序遍历)。HashMap  HashMap的基础是一个Entry数组。   Entry对象是HashMap的基本元素。同时Entr...

2018-04-11 14:20:19 154

原创 touch事件分发机制

  View事件的分发可以用如下伪代码来描述:public boolean dispatchTouchEvent(MotionEvent ev){ boolean consume = false; if(onInterceptTouchEvent(ev)){ consume = onTouchEvent(ev); }else{ consu...

2018-04-10 19:04:41 268

原创 整数中1出现的次数(从1到n整数中1出现的次数)

题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思路:先得出求一个整数中1的个数的方法,遍历1到n求其中1的个数相加即可。public class ...

2018-04-09 21:16:24 92

原创 连续子数组的最大和

题目:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少...

2018-04-09 20:10:19 73

原创 最小的k个数

题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:先对数组排序,然后取前k个数。import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(i...

2018-04-09 19:44:46 77

原创 关于LruCache

LinkedHashMap  LruCache中维护了一个LinkedHashMap实例。缓存的实现主要由LinkedHashMap来完成。  LinkedHashMap继承自HashMap,拥有HashMap的特性,比如线程不安全,初始容量是16,装载因子0.75等。不同的是其用双向循环链表把所有数据串在了一起。LinkedHashMap中有两个重要的变量,分别是header和accessOrd...

2018-04-09 13:04:41 98

原创 数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:先把所有出现过的数字和出现的次数以键值对的形式存起来,然后取出现次数和数组的一半值进行比较。import java.util.HashMap;import java...

2018-04-09 00:00:11 96

原创 字符串的排列

题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。思路:先想一下如果只有一个字母,那么直接返回这个字符串。如果有两个不同的字母,则分别返回它们的组合,如果有三个字母,则分别拿出每一个,再和其它两个组合。。。。。。这样就构成了递归。import java.util...

2018-04-08 23:37:21 83

原创 Scroller的用法

Scroller的基本用法  Scroller用于View的滑动,其基本原理还是ScrollTo/ScrollBy。Scroller在其基础上把滑动的位移切分成无数细小的单元,并在一个时间段内对其进行位移,使View的滑动看起来具有平滑的效果。   Scroller的一般使用要结合View的ComputeScroll方法。这个方法默认会在View的draw方法(我们一般重写的是onDraw方...

2018-04-08 15:04:45 4140

原创 二叉搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路:先想一想最简单的情况怎么处理。即三个节点,根,左,右。这个时候应该先把根的left节点的right属性指向根,然后把根的right节点的left属性指向根,然后返回根的left节点。若根的left节点不是叶子节点,那么则以这个节点开始,求其叶子节点,并把根节点的left...

2018-04-07 23:55:56 79

原创 关于View和滑动的一些总结

View的位置参数  View中有四个基本的位置参数,分别是left,right,top,bottom。分别代表View的左上角横坐标,右上角横坐标,左上角纵坐标,右下角纵坐标。这四个参数都是相对父容器来说的。View有一个获得宽高的方法:getWidth()和getHeight(),其内部实现就是width=right-left,height = bottom-top。并且这四个属性的赋值是...

2018-04-07 12:34:14 158

原创 复杂链表的复制

题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路:遍历链表然后创建对象。public class Solution { public RandomListNode Clone(RandomListNode...

2018-04-06 23:22:14 118

原创 二叉树中和为某一数的路径

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 思路:先找到二叉树的所有路径,然后计算和,取符合标准的路径:public class Solution { ArrayList<ArrayList<Integer>> result = new ArrayList(...

2018-04-06 22:37:55 92

原创 记录ArrayList的一个坑

  在写算法时遇到了这么一个需求:用ArrayList去保存ArrayList,然后当作返回值返回。  里面那层ArrayList保存的是int数据,外面那层保存的是ArrayList。涉及到ArrayList的add和addAll还有remove操作。有这么一段代码://错误if(root.left!=null){ ArrayList<Integ...

2018-04-06 22:33:42 197

原创 二叉搜索数的后序遍历

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:所谓二叉搜索数,就是对于所有的节点,节点左边的子节点都小于该节点,节点右边的子节点都大于该节点。已知二叉搜索树的后序遍历,则数组的最后一个节点为根节点。遍历数组找到第一个比根节点大的下标,则该下标往后应该都是右子树,也就是说往后应该都比根节点大。...

2018-04-06 18:09:25 106

原创 HandlerThread和IntentService

HandlerThread  HanderThread是Thread的子类。其内部封装了一个handler。用于别的线程向该线程发送消息的情况。@Override public void run() { mTid = Process.myTid(); Looper.prepare(); synchronized (this) { ...

2018-04-06 16:50:44 106

原创 单例模式

用静态内部类实现单例public class SpecialSingleton { // 静态内部类 private static class InnerClass { private static SpecialSingleton instance; static {//静态代码块只被初始化一次,并且虚拟机保证其线程安全。...

2018-04-05 12:46:59 76

空空如也

空空如也

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

TA关注的人

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