算法题解-1143. 最长公共子序列
1.题目描述1143. 最长公共子序列
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,”ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。
若这两个字符串没有公共子序列,则返回 0。
示例 1:
123输入:text1 = "abcde", text2 = "ace" 输出:3 解释:最长公共子序列是 "ace",它的长度为 3。
示例 2:
123输入:text1 = "abc", text2 = "abc"输出:3解释:最长公共子序列是 "abc",它的长度为 3。
示例 3:
123输入:text1 = "abc" ...
算法分析设计-动态规划
一. 动态规划(Dynamic programm)1.什么是动态规划动态规划,英文是Dynamic Programming,简称DP,擅长解决“多阶段决策问题”,利用各个阶段阶段的递推关系,逐个确定每个阶段的最优决策,并最终得到原问题的最优决策。
2.动态规划的适用条件
一个问题的求解可以拆分为若干个阶段的子问题。
问题的最优解依赖于子问题的最优解。
一个问题的求解过程中,其子问题可能会重复出现。(如斐波那锲数列子问题重复太多,导致时间复杂度高,所以动态规划需要规避重复)
二. 跳跃游戏1.题目描述给定一个非负整数数组,你最初位于数组的第一一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。
数组1: 2 3 1 1 4
数组2:3 2 1 0 4
2.暴力求解(Brute )12345678910111213141516171819202122//暴力求解法//思路:遍历每一个位置,找到该位置可以跳的所有位置,打上标记//缺点:有的位置可能多次被打上标记,浪费时间public sta ...
Android随笔-加载布局的LayoutInflater
一. 介绍LayoutInflater类 用来加载布局文件,我们通常加载布局的任务都是在 Activity 中 调用 setContentView() 方法来完成的,但其实 setContentView() 内部 还是使用 LayoutInflater类 加载布局的。
二. LayoutInflater1. 获得 LayoutInflater类实例对象 的两种方式1public static LayoutInflater from(Context context);
1context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2. 使用 LayoutInflater实例对象 加载布局123public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) { return inflate(resource, root, root != null);}
1public View inflate(@LayoutRes int r ...
Android控件-ViewPager的无限循环
一. 默认不可以无限循环的状态12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485public class MainActivity extends AppCompatActivity { //图片资源 private int[] resources = {R.drawable.pic_1,R.drawable.pic_2,R.drawable.pic_3}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main) ...
Android控件-ViewPager的预加载和懒加载
一. ViewPager的预加载1public void setOffscreenPageLimit(int limit);
设置预加载的页面数量limit,默认是1。但是就算设置 0,源码里面也会把你重新设为1。这里面说的数量是屏幕之外加载的数量。
同时,limit还有另外一层含义,缓存 2*limit+1 页。例如 limit = 1时,当前在第一页,会预加载第二页;滑动到第二页,会预加载第三页;当滑动到第三页,需要预加载第四页。此时,有四个页面,可我们只能缓存三个页面,所以第一个页面会被销毁。
12345678910111213141516171819//DEFAULT_OFFSCREEN_PAGESprivate static final int DEFAULT_OFFSCREEN_PAGES = 1;//源码public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offsc ...
Android控件-ViewPager的翻页动画
一. ViewPager翻页动画1.介绍① PageTransformer接口
ViewPager提供了PageTransformer接口用于实现翻页动画。有两个参数:page 和 position。
page :ViewPager每一页的视图。
position:page对应的位置,是百分比位置。
1234public interface PageTransformer { void transformPage(@NonNull View page, float position);}
② position的理解
如果超过屏幕的绝对距离超过屏幕的宽度,那么绝对距离就会变成无限大。仔细想想,只有page 的 position 处于 ( -1 , 1 ) 的位置,我们才能在屏幕看到它们的内容。
上面的理解是来自别人博客的理解,这样子理解有点小问题。我在自己实现 PageTransformer接口 的时候,在函数里面打印了 position 。
如果你有六个页面,由于ViewPager默认只会加载两个页面,所以只会有第一个页面和第二个页面进入到 ...
Android随笔-res文件夹下values的一些使用
一. colors二. strings1. 存储字符串数组① 定义
12345678910<resources> <string name="app_name">ClassFive</string> <string-array name="test"> <item>Tab-1</item> <item>Tab-2</item> <item>Tab-3</item> <item>Tab-4</item> </string-array></resources>
② 使用
1String[] stringArray = getResources().getStringArray(R.array.test);
三. styles1. 应用场景当用Xml方式布局设置样式的时候,有时候某几个控件重合的部分可能会很多, ...
Android碎片-Fragment
一. 简介1. Fragment是什么,有什么用?12java.lang.Object ↳ android.app.Fragment
Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fragment要多,响应速度Fragment比Activty在中低端手机上快了很多,甚至能达到好几倍!
2. Fragment优点
Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。
Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。
Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。
Fragment提供一个新的方式让你在不同的安卓设备上统一你的UI。
Fragment 解决Activity间的切换不流畅,轻量切换。
Fragment 替代TabActivity做导航,性能更好。
Fragment 在4.2.版本中新增嵌套fragmeng使用方法,能 ...