自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA基础学习(三)——反射、注解、泛型、集合、IO及异常等

本文汇总一下杂七杂八的知识,重要程度会在文中表述。一、反射在学golang时候接触过反射,但并没有看懂,这里温习一下。现在给你一个类Object,要获取他的字段,方法,父类等信息,如何做呢?知道这个类是啥,求上述信息很简单,但万一不知道呢?在测试中可能就会出现这种情况。反射就是程序在运行期间,获取对象的各种信息的过程。换句话说,根据class实例,获取class各种信息的过程就是反射。任何一个类class的实例都是由JVM动态加载实现的。

2024-04-21 13:14:59 1498 1

原创 JAVA基础学习(二)——继承、多态、接口

面向对象的编程中,继承、多态等是非常重要的内容。这里主要总结概念性知识,具体实操需要自行练习。一、继承与组合继承是指一个类获得了另一个类的全部非private字段和方法,同时有扩展了其他字段和方法。由于一些字段不想直接被外部引用又需要传递给子类,因此需要定义为protected。在子类中,使用super来表示父类,使用super.Name来表示父类的字段。在定义构造函数时,如果构造函数第一句没有super()那编译器会自动添加super()代表调用父类的无参构造。

2024-04-20 13:48:57 758

原创 JAVA基础学习(一)—— 编程结构与OOP

JAVA作为一门编程语言,分为三个版本。SE标准版,包含基础语法、多线程、IO流等核心类;EE企业版,包含SE的基础上还有扩展部分如Spring、mybatis、JDBC等;ME微型版,包含SE的部分类库,又有自己的扩展,包含移动类、嵌入式开发等等。一、JAVA基本编程结构本文主要对java基础知识以及部分类与对象的内容进行归纳总结学习。

2024-04-14 16:30:13 1417 2

原创 JAVA面试题——摩尔投票法

定义众数x为第一个元素,遍历数组时等于x则投票数+1,反之则-1。若投票数==0,说明在遍历过的元素中众数的个数等于其余元素,而由于众数在这里被定义成大于数组长度一半的元素,因此剩下没有遍历过的元素中,众数个数一定大于其他元素的。由于x的个数可能不到数组长度半(也就是不存在题目定义的“众数”),还需要计算个数。在求解众数时,我们常见的方法是哈希统计,时间、空间复杂度是O(n)。摩尔投票法是基于这样的原理:当一个数的重复次数超过数组长度的一半,每次删除两个不相同的数,最终剩下的即为答案。

2024-04-14 12:24:34 179 1

原创 JAVA面试题——快速幂与乘法逆元

在golang 学习中涉及到,这次重温一下。以下为代码,原理不再赘述。博主在做时,发现数据量较小时,可以使用动态规划来做如,时间复杂度空间复杂度皆为O(n)。但数据量较大时,只能贪心+快速幂来解决。本题中,要想使一个数拆分后乘积最大,因子只能是3。当n小于等于3,拆分成两个数,乘积最大为n-1;大于3时,要想尽办法,使得因子中有更多的3,即8拆分成3*3*2,10拆分成3*3*4。总结规律发现,n%3==0,result=quickPow(3,n/3);

2024-04-14 11:34:30 412 2

原创 美团OC——从0开始学java

golang中对于一些任务的超时是如何管理的?今后会持续更新从零开始的Java学习之路,包括算法、web、数据库、分布式等内容,恳请读者们监督、批评、指正。3、操作系统与linux:操作系统的内存管理如何实现的?一个文件中有大量的url,空格隔开,列出出现频率前十的url?1、项目15min:涉及zookeeper注册发现的原理、epoll/poll区别、reactor/proactor区别等等;5、Mysql:B+树与跳表、B树的区别?1、Redis:跳表的底层如何实现?缓存击穿、穿透、雪崩有什么区别?

2024-04-09 22:27:01 296 1

原创 4.快速幂与乘法逆元模板

观察可知,任意一个数(如7)都可以转化成若干个2的幂次的和(4+2+1)。这是因为7=111,而111=100+10+1。因此在快速幂中,一次判断每一个位置是否为1,是的话乘x的对应次幂即可。若n为负数,则x=1/x;:常规算法是循环相乘,时间复杂度On;这里介绍一种Ologn算法——快速幂,用于求解大数运算时复杂度较高,爆int情况。以上是基础算法,对于一些题需要对1000000007取模,可以使用下面改进算法计算。

2024-04-02 11:31:19 166 2

原创 3.动态前缀和——树状数组模板

通过阶梯状分段数组来表示部分和,具体原理可见该文章。需要额外注意的是树状数组的长度等于原数组最大元素+1,因此需要进行离散化计算:先拷贝出一个原始数组,再排序,通过二分查找标记原数组中元素在数组中大小排序情况。有由于树状数组的排好序的,因此可以方便的统计逆序对数目。代码中lowbit中的x&-x代表x中只保留最后一个1时的数值;update代表对数组中对应区间进行更新(+1);树状数组——对于前缀和的计算,当其中一个元素改变时,与之关联的所有和全部需要重新计算,On时间复杂度。求一个数组中逆序对的个数。

2024-04-01 15:57:05 111

原创 2.位运算——按位或模板

反向遍历nums数组,ors中第一个位置保存m个元素按位或结果,第二个位置保存m-1个元素按位或结果,以此类推。然后进行原地去重,k代表保存不重复的运算结果的右端点(从0开始),我们需要依次比较ors中其余元素(因此使用ors[1:])是否重复,不重复则计数,并将他保存在k+1的位置。:按位或运算有两个显著特点,一个数与其他数按位或的结果中一的个数要么不变要么加一;左端点相同时,遍历右端点按位或时存在两个右端点计算结果一致,说明中间数也会得出相同结果,因此可以原地去重。,在此进行总结学习。

2024-03-31 14:22:16 237 1

原创 栈与队列——Golang实现

push向队列2push数据,再把队列1中数据送入队列2中,这样使得刚刚送入队列的元素排在最前面,pop时候直接送出即可。,非常遗憾的是,golang没有专门的栈和队列的数据结构。只能通过切片来代表栈(先进后出)、队列(先进先出)。:使用两个栈,push时,向栈1放元素;pop时,先将栈1元素出栈再向栈2入栈。,push之后将n-1个元素依次放入队列尾部,pop时候,直接取出即可。:如何用栈实现队列?

2024-03-30 10:10:58 163 1

原创 滑动窗口——Golang实现

for循环遍历right,然后累加/统计nums[right],在通过内层for循环左移left,直到满足条件为止,统计结果即可。本题,固定/枚举右端点,然后逐渐右移左端点,看看最少能移动到那个位置,循环结束,只需要统计left左侧位置的元素个数+1即可。中,统计子数组个数,这种问题,必须要注意,需要固定一个端点,求遍历过的元素中,满足条件的子数组个数。否则容易漏算、超算。中,right遍历nums,使用map存储元素频率,再使用for循环左移left,保证结果满足条件,统计结果即可。

2024-03-26 10:59:33 344

原创 快慢指针——golang实现

为了判断一个链表或一串渐进式变化的数据是否存在“环”,可以使用这种方法,一般慢指针走一步,快指针走两步,最终一定会相遇。这是一维情况下的结果,在二维时,一般要使用图论或DFS相关知识来解决!中,数据的计算要么到达1要么处于循环中,因此可以使用这种方法解决。中,环形链表也是一样的情况。

2024-03-25 22:01:58 223

原创 二分查找——Golang实现

求最少天数,由于天数越多,越容易达成制作m束花的条件,因此满足单调性。求出最少天数与最大天数,然后二分,对于不同的天数mid,在check中检测mid能否完成m束花制作?值得注意的是,这里mid的选取不要写成(left+right)/2!可能会出现数组越界的问题!:题目中出现,在题目中出现mid越大或越小,则越容易满足条件要求,这种便满足单调性。上述题目比较的是nums[mid]与target,引申中一般用check(...)函数来比较!,如果目标值存在返回下标,否则返回。时候,一般可用此法。

2024-03-21 22:44:07 337

原创 1、位运算

给你一个整数 `n` ,对于 `0 <= i <= n` 中的每个 `i` ,计算其二进制表示中 `1` 的个数 ,返回一个长度为 `n + 1` 的数组 `ans` 作为答案。:x&=x-1代表将x最后一个1变为0,因此,当x&x-1=0时,代表x最高位为1,其余位为0。

2024-03-17 09:17:44 206

空空如也

空空如也

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

TA关注的人

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