Print all sub-array with 0 sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Given an array of integers, print all subarrays having 0 sum.

For example,

Input: { 4, 2, -3, -1, 0, 4 }
Sub-arrays with 0 sum are
{ -3, -1, 0, 4 }
{ 0 }

Input: { 3, 4, -7, 3, 1, 3, 1, -4, -2, -2 }
Sub-arrays with 0 sum are
{ 3, 4, -7 }
{ 4, -7, 3 }
{ -7, 3, 1, 3 }
{ 3, 1, -4 }
{ 3, 1, 3, 1, -4, -2, -2 }
{ 3, 4, -7, 3, 1, 3, 1, -4, -2, -2 }

查看更多

评论

Sunday 算法

KMP算法和BM算法,这两个算法在最坏情况下均具有线性的查找时间。但实际上,KMP算法并不比最简单的c库函数strstr()快多少,而BM算法虽然通常比KMP算法快,但BM算法也还不是现有字符串查找算法中最快的算法,有一种比BM算法更快的查找算法即Sunday算法。

查看更多

评论

Android Service相关问题

一、Service里面的 onStartCommand() 方法详解

通过 startService() 多次启动service的时候,onCreate方法只有第一次会调用,onStartCommand和onStart每次都被调用。onStartCommand会告诉系统如何重启服务, 比如会判断是否异常终止后重新启动,以及在何种情况下异常终止Service。

查看更多

评论

Java静态多态和动态多态

静态分派

所有依赖静态类型来定位方法执行版本的分派动作,都称为静态分派,静态分派的最典型应用就是多态性中的方法重载。

动态分派

根据变量的实际类型来分派方法的执行版本的。而实际类型的确定需要在程序运行时才能确定下来,这种在运行期根据实际类型确定方法执行版本的分派过程称为动态分派。

查看更多

评论

Alarm实现机制分析

alarm的使用这里就不说了,来看看alarm是怎么实现提醒的。

查看更多

评论

RxAndroid

Observer

创建Observer :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Observer observer = new Observer<Model>() {
@Override
public void onComplete() {
......
}

@Ovrride
public void onError(Throwable e) {
......
}

@Override
public void onNext(Model model) {
......
}
};

查看更多

评论

Java 中的 IncompatibleClassChangeError 错误

最近发现了一个从来没遇到过的崩溃 IncompatibleClassChangeError ,出现这种错误的原因可能是因为jar包的代码发生了一些无法执行 二进制兼容 的变化。最有可能的是将非静态的成员变量或者方法变成了静态的,还有将私有的成员变量和方法变成了共有的。并且引用jar包的客户端没有重新编译源码。

IncompatibleClassChangeError 这个错误只是二进制兼容问题其中的一种错误。

查看更多

评论

Android ANR 分析的几个要点

一、找到trace.txt中的ANR

1
2
3
4
----- pid 23835 at 2017-02-21 20:11:48 -----
Cmd line: com.wisim.example

......

trace.txt中,上面这种形式就是一个ANR日志的开始标志了。一个trace.txt中会有好多ANR,有的可能在界面上弹出提示框,有的没有。

查看更多

评论

Android ViewDragHelper

ViewDragHelper 作为处理手势滑动,实现复杂滑动效果很有一套。一起来看看它的实现原理。

查看更多

评论

Java中 a=a+b 和 a+=b 的区别

千万不要放过任何一个小的知识点(一个这么小的点也可以拿来写一篇文章 哈?)

查看更多

评论

Java多线程-ThreadLocal的使用

ThreadLocal的设计不是为了解决多线程之间的数据共享问题,而是为了实现了线程间的数据隔离。ThreadLocal 很残暴的在每个线程内部自己维护一个变量,你别的线程的数据我不要,我只管我自己的数据。
这样的结果是降低了线程的同步的复杂度,但是内存使用也就上去了。是一种“以控件换空间”的方式。而已 “synchronized” 为代表的一系列线程同步方式,则是“以时间换空间”的方式。那就来看看ThreadLocal要怎么使用吧。

查看更多

评论

Java多线程-static synchronized 和 synchronized 修饰的方法的区别

一晃眼居然两个多月没写博客了,那这两个月究竟忙什么了呢。仔细想想好像也没干啥。大概是忙着灌药了吧。唉,以后还是多写点博客吧,不然感觉虚度光阴了。🙏

查看更多

评论

Android Hook getDeviceId方法篡改设备id

学习一下如何使用动态代理来Hook Android中Java层的方法,这里拿TelephoneManager的getDeviceId方法来做练手,先来看看如何使用TelephoneManager获取deviceId:

1
2
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.getDeviceId()

查看更多

评论

Java并发-CyclicBarrier

CyclicBarrier是一种多线程并发控制实用工具。可以实现线程间的计数等待。CyclicBarrier翻译过来就是循环栅栏,可以用来阻止线程继续执行,要求线程在栅栏处等待。

查看更多

评论

Java并发-读写锁ReadWriteLock

读写锁是为了帮助解决多线程中读操作和写操作分离而设计的。想象一下,如果在系统中,读操作远远大于写操作,而每一次写操作进行时,别的写操作也要等待,这样对系统的性能会有很大的影响。ReadWriteLock是JDK5开始提供的读写分离锁。

查看更多

评论

LeetCode:70. Climbing Stairs

LeetCode:70. Climbing Stairs

1
2
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

查看更多

评论

LeetCode:377. Combination Sum IV

LeetCode:377. Combination Sum IV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.

Example:

nums = [1, 2, 3]
target = 4

The possible combination ways are:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)

Note that different sequences are counted as different combinations.

Therefore the output is 7.

查看更多

评论

LeetCode:385. Mini Parser

LeetCode:385. Mini Parser

1
2
3
4
5
6
7
8
9
Given a nested list of integers represented as a string, implement a parser to deserialize it.

Each element is either an integer, or a list -- whose elements may also be integers or other lists.

Note: You may assume that the string is well-formed:

String is non-empty.
String does not contain white spaces.
String contains only digits 0-9, [, - ,, ].

查看更多

评论

ReactNative从网络获取数据并显示

这里我们来实现一个极其简单的天气预报的小例子。获取网络接口天气预报的json数据,再显示在Text上。同时有个输入框,可以输入城市信息,再按确认,则会更新数据。同时还可以以列表形式展示未来几天的天气预报。

查看更多

评论

LeetCode:378. Kth Smallest Element in a Sorted Matrix

LeetCode:378. Kth Smallest Element in a Sorted Matrix

1
2
3
4
5
6
7
8
9
10
11
12
13
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.
Note that it is the kth smallest element in the sorted order, not the kth distinct element.

Example:
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,
return 13.

Note:You may assume k is always valid, 1 ≤ k ≤ n2.

查看更多

评论