LeetCode刷题 - Z 字形变换

题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int...

阅读更多

LeetCode刷题 - 最长回文子串

题目 给定一个字符串 s ,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000 。 思路 之前想过了,但是一直没想出来,思路过于狭隘,只好参考题解。 解法一 中心扩展方式。思路就是先找到中心点,然后向左向右同时遍历,如果左右相等,则继续遍历,如果左右不相等,则遍历结束,得到的就是最长回文子串 public String longestPalindrome3(String s) { if (s == null || s.isEmpty()...

阅读更多

LeetCode刷题 - 寻找两个有序数组的中位数

题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 思路 竟然要求时间复杂度是O(log(m + n)),我能做出来就不错了,还要求这么高,要啥自行车啊,但是不管怎么样吧,先搞出来在说。至于时间复杂度,一步一步来吧。 解法一 首先我想的就是通过两个 index ,把两个数组合并成一个,然后取出来...

阅读更多

LeetCode刷题 - 买卖股票的最佳时机

状态: MP[i] 到第i天的最大收益 Max Profit 状态转移方程: 第i天可以做两个操作 买入股票 MP[i]= MP[i-1]-a[i] 就是到第i-1天的最大收益然后减去第i天的数字,因为第i天买入股票,收益就是负数 卖出股票 MP[i]= MP[i-1]+a[i] 因为买之前,手里必须没有股票,卖之前,手里必须有股票,所以状态定义为一位数组,丢失很多信息, ...

阅读更多

扫盲系列 - Java 泛型

泛型作用: 编译时期做类型检查以及自动转型。包括泛型类,泛型接口,泛型方法 泛型方法 public <T> String getString(T parm) { return parm.toString(); } 泛型通配符 <?> 可以接受任何类型的数据。 只能在声明的时候使用,不能在创建的时候使用, new ArrayList 这样是不可以的,Lit<?> list=null,这样是允许的。 L...

阅读更多

View 属性动画

上篇介绍了 View动画 ,这篇就主要说 属性动画 属性动画 可以对任意对象的属性进行动画而不仅仅是 View 。动画的默认时间是 300ms ,默认帧率是10ms/帧, 其可以达到的效果就是在一个时间间隔内,完成对象从一个属性值到另外一个属性值的改变,因此,属性动画几乎是无所不能的。 只要对象有这个属性,就能实现动画效果。 属性动画是从 API11 开始的,可以使用 nineoldandroids 来兼容以前的版本。 常用的动画类 ValueAn...

阅读更多

View 动画

Android 动画分三种 View 动画 通过对场景里面的对象不断做图像转换(平移,缩放,旋转,透明度)从而产生动画效果,是一种渐进式动画 帧动画 属于 View 动画的一种,只不过他和平移,旋转等常见的 View 动画表现形式略有不同。通过顺序播放一系列图像从而产生动画效果,可以简单的理解为图片的切换动画,如果图片过大,可能导致OOM 属性动画 通过动态改变对象的属性从而达到动画效果, API11 新特性,低版本可以使用兼容库 这篇主要介绍...

阅读更多

Android AIDL 总结

名词解释 IInterface 自定义 AIDL 接口需要继承了 IInterface 接口,只有一个 asBinder() ,用来返回 AIDL 中 Stub 类的对象。如果是同进程的本地接口,则返回 this ,否则,返回 BinderProxy 代理对象。 IBinder IBinder是一个接口,它代表了一种跨进程传输的能力;只要实现了这个接口,就能将这个对象进行跨进程传递;这是驱动底层支持的;在跨进程数据流经驱动的时候,驱动会识别 IBinder...

阅读更多