代码随想录学习记录
代码随想录学习记录数组双指针思想
二分查找这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。
704. 二分查找
35. 搜索插入位置
34. 在排序数组中查找元素的第一个和最后一个位置
69. x 的平方根
367. 有效的完全平方数
704. 二分查找
704. 二分查找 - 力扣(LeetCode)
12345678910111213141516171819202122class Solution { public int search(int[] nums, int target) { int left = 0, right = nums.length - 1; // 左闭右闭 while (left <= right) { int mid = left + ((right - left) ...
Leecode面试经典150题
Leecode面试经典150题数组 / 字符串88. 合并两个有序数组一开始个人写法
12345678910111213141516171819202122class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int[] ints = new int[m + n]; int t = 0, t1 = 0, t2 = 0; while (t1 < m && t2 < n) { if (nums1[t1] < nums2[t2]) { ints[t++] = nums1[t1++]; } else { ints[t++] = nums2[t2++]; } } while ( ...
剑指offer个人算法准备
剑指offer个人算法准备剑指Offer数据结构链表双指针
JZ6 从尾到头打印链表
JZ24 反转链表
JZ25 合并两个排序的链表
JZ52 两个链表的第一个公共结点
JZ23 链表中环的入口结点
JZ22 链表中倒数最后k个结点
JZ35 复杂链表的复制
JZ76 删除链表中重复的结点
JZ18 删除链表的节点
JZ6 从尾到头打印链表
翻转,浪费时间
123456789101112131415161718192021222324252627282930313233343536373839import java.util.*;/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solution { ...
面试准备(框架部分)
面试准备(框架部分)Glide先上其他大牛的博客链接
面试官:简历上最好不要写Glide,不是问源码那么简单 - 掘金 (juejin.cn)
Android | 《看完不忘系列》之Glide - 掘金 (juejin.cn)
基础流程开始自己的记录
需要明确的是看其他人的图片加载框架其实就是为了学习如果自己要搭建一个图片加载框架需要做的各个方面的工作
首先看最简单的用法
1234Glide.with(this).load(url).into(imageView);//with(Context/Activity/Fragment)决定Glide加载图片的生命周期//load(url)url包括网络图片、本地图片、应用资源、二进制流、Uri对象等等(重载)//into(imageView)
最简单的用法可以看作主干,其实就是三部曲
更进阶一点的用法这里贴出来,当然还有更多
123456//扩展功能.placeholder(R.drawable.loading)//加载图片过程占位符,加载完成会替换占位符.error(R.drawable.error)//加载图片错误占位符.asGif( ...
面试准备(安卓部分)
面试准备(安卓部分)四大组件Activity,Broadcast Receiver,Service以及Content Provider。
Fragment也写到这里来吧
Activity官方给出的生命周期图片,对照了Activity和Fragment的生命周期
四个状态
活动状态(Running/Active)、暂停状态(Paused)、停止状态(Stopped)、销毁状态(Killed)
四个启动模式
Standard
SingleTask
SingleTop
SingleInstance
Flags标识
FLAG_ACTIVITY_NEW_TASK 跟在AndroidManifest设置launchMode为SingleTask一样效果,但是Flags的优先级更高
FLAG_ACTIVITY_SINGLE_TOP 跟在AndroidManifest设置launchMode为SingleTop一样效果
FLAG_ACTIVITY_CLEAR_TOP 一般跟SingleTop同时出现,当然也可以跟其他一起用,会将这个实例连同他之上的Activity都出栈,然后再新建一个实例 ...
面试准备(Java部分)
面试准备(Java部分)Java是一种技术,由四个方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)
Java Class 类文件格式看这一篇就够了_java class文件-CSDN博客
JVMJVM(虚拟机):指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的计算机系统,是物理机的软件实现,Java虚拟机是采用虚拟化技术,隔离出一块独立的子操作系统,使Java软件不受任何影响在虚拟机内进行执行。
Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM(JDK1.8合并)
开发人员编写Java代码,并将Java源代码文件(.java文件)通过Java编译器进行编译后形成java字节码文件(.class文件),通过类加载子系统加载到运行时数据区(内存空间),再通过JVM执行引擎进行执行。
JVM实现了Java平台的无关性
在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Ja ...
Android模块化开发和组件化开发
Android模块化开发和组件化开发简介单工程项目
单工程项目结构
单工程项目的缺陷
随着应用的不断迭代更新,业务代码持续增加,随之而来的问题逐步呈现出来:
各种业务代码混杂在同一个模块中,开发人员在开发、调试过程中的效率越来越低,比如定位某个业务问题,需要在多个业务代码混合的模块中寻找和跳转。
工程师需要了解各个业务的功能,避免代码的改动影响其他业务的功能,导致开发和维护成本不断增加。
由于功能工程越来越庞大,编译完整代码所花费的时间越来越长。
多人协同开发时,开发风格不一,又难以将业务完全分割,大家互相影响,导致开发效率低下。
代码复用性差,写过的代码又很难抽离出来再次使用。
模块化和组件化
什么是组件化
组件(Component),对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度。
组件化是基于可重用的目的,将大型的软件系统按照分离关注点的形式,拆分成多个独立的组件,使得整个软件系统也能做到电路板一样,是单个或多个组件元件组装起来,哪个组件坏了,整个系统可继续运行,而不出现崩溃或不正常现象,做到更少的耦合和更高的内聚。
为什么需要使用组件化 ...
Android导入项目及环境说明
Android导入项目及环境说明配置 build | Android Studio | Android Developers
这里有完整的Android项目构建的不同部分的说明,可以根据需求点击跳转去查看
环境说明首先需要知道的是不同的版本的Android Studio支持的AGP版本范围是不同的,不同的AGP能支持的Gradle版本也是不同的,项目使用不同的API版本也需要不同的AGP支持,这就是几者之间的关系,具体需要可以参考官网。
Android Gradle 插件 8.4 版本说明 | Android Studio | Android Developers (google.cn)
而项目使用的JDK只是构建项目使用
导入项目因版本不匹配出现的编译错误一般JDK版本是没什么问题的,可以在project structure中选择SDK Location,里面…可以找到jdk的设置,如果项目sync失败可以进去看看,顺便看JDK有没有问题再做其他修改了,也可以在setting中直接搜索Gradle也可以找到。
主要看API版本先,旧版的Gradle构建出来的项目是可以在pro ...
小白个人Android面试准备
准备整体知识框架
Java知识Tempstatic:是静态的意思;
final:是最后的意思;
区别:
1.final可以修饰类,方法和变量,但是static只能修饰方法和变量;
2.final可以修饰全局变量和局部变量,但是static只能修饰全局变量,不能修饰局部变量;
3.final不可以修饰代码块,但是static可以修饰代码块。
static与final的区别_static和final的区别-CSDN博客
作用域public/private/protected的具体区别_public protected private的作用域-CSDN博客
泛型
Java的泛型符号的名称不要求,个数也不要求,一般有T type,E element,K key,V value,Java的泛型是一个占位符,先给引用类型进行占位,泛型符号可以应用在类的声明处、接口声明、方法的声明
泛型类
ArrayList<E>和HashMap<K,V>就是泛型类
在类中声明了之后就需要在创建类的对象的时候就需要去确定类的声明处定义的泛型的具体类型,如果在构建对象的时候 ...
经典排序算法+牛客面试必刷101
经典排序算法+牛客面试必刷101十大经典排序算法经典的十大排序算法可以大致分为两类:
比较类排序:
冒泡排序 =》快速排序(冒泡排序优化)
插入排序=》希尔排序(插入排序优化)
选择排序=》堆排序(选择排序优化)
归并排序(二路、多路)
非比较类排序:
计数排序 = 》桶排序
基数排序
冒泡排序123456789101112131415161718192021222324252627282930313233343536373839404142public class BubbleSort { public static void main(String[] args) { int[] ints = new int[]{2343, 234, 765, 1, 23, 5, 3, 2, 0, 3}; bubbleSort(ints); for (int i : ints) { System.out.print(i ...