草庐IT

leetcode 560. Subarray Sum Equals K 和为 K 的子数组(中等)

一、题目大意https://leetcode.cn/problems/subarray-sum-equals-k给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1-1000-107二、解题思路三个思路,第一个:三层遍历,遍历i从0到n,第二层遍历j从i到n,第三层遍历i-j,求和,这种方法会超时第二个:求累加和sum[i]=num[0]-num[i-1],这样二层遍历得到(i,j),检查sum[j]-sum[i]第三个:定义一个hash来保存s

【学习日志】Java基本数据类型的自动装箱和拆箱

//测试代码输出结果:truefalsetruetruetruefalse原因:1.内存地址对比,但是由于值处于-128~127,因此存储在常量池中,内存地址相同2.内存地址对比,由于值不在-128~127,因此值存储在堆中,内存地址不同3.遇到运算符+号,自动拆箱为int类型对比,值相同4.调用Integer的equals方法,遇到+号,自动拆箱为int类型的3,传入equals方法,自动装箱为Integer类型的3,进行值对比,具体可查看Integer类型的equals方法源码,值相同5.遇到运算符+号,自动拆箱为int,与Long类型对比,自动转型为long(编译时),自动拆箱为long

【学习日志】Java基本数据类型的自动装箱和拆箱

//测试代码输出结果:truefalsetruetruetruefalse原因:1.内存地址对比,但是由于值处于-128~127,因此存储在常量池中,内存地址相同2.内存地址对比,由于值不在-128~127,因此值存储在堆中,内存地址不同3.遇到运算符+号,自动拆箱为int类型对比,值相同4.调用Integer的equals方法,遇到+号,自动拆箱为int类型的3,传入equals方法,自动装箱为Integer类型的3,进行值对比,具体可查看Integer类型的equals方法源码,值相同5.遇到运算符+号,自动拆箱为int,与Long类型对比,自动转型为long(编译时),自动拆箱为long

为什么要重写equals要重写hashcode方法

Java比较(==,equals)一、====:比较两个对象的引用是否是同一个地址二、equalsobject中equals方法调用的就是==,可以在其他类中重写该方法。三、为什么要重写equals要重写hashcode方法因为散列集合插入对象时会进行判断,先调用hashcode,如果相同,再调用equals,如果都相同则只插入一个。如果只重写了equals方法,那么默认情况下,散列集合(HashMap、LinkedHashMap、HashSet、LinkedHashSet)进行去重操作时,会先判断两个对象的hashCode是否相同,此时因为没有重写hashCode方法,所以直接执行Objec

为什么要重写equals要重写hashcode方法

Java比较(==,equals)一、====:比较两个对象的引用是否是同一个地址二、equalsobject中equals方法调用的就是==,可以在其他类中重写该方法。三、为什么要重写equals要重写hashcode方法因为散列集合插入对象时会进行判断,先调用hashcode,如果相同,再调用equals,如果都相同则只插入一个。如果只重写了equals方法,那么默认情况下,散列集合(HashMap、LinkedHashMap、HashSet、LinkedHashSet)进行去重操作时,会先判断两个对象的hashCode是否相同,此时因为没有重写hashCode方法,所以直接执行Objec

9、 Hashcode的作用

Hashcode的作用        java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较慢。        于是有人发明了哈希算法来提高集合中查找元素的效率。这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的那个区域。        hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合要添加新

9、 Hashcode的作用

Hashcode的作用        java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较慢。        于是有人发明了哈希算法来提高集合中查找元素的效率。这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的那个区域。        hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合要添加新

equals()

比较对象请记住,当你创建对象时,变量存储的是对象的引用。所以,当使用(==)比较对象时,它实际上比较的是引用而不是对象值。下面是一个例子:classAnimal{ Stringname; Animal(Stringn){  name=n; }}classMyJavaClass{ publicstaticvoidmain(String[]args){  Animala1=newAnimal("Kitty");  Animala2=newAnimal("Kitty");  System.out.println(a1==a2); }}//输出false提示:尽管有两个名称相同的对象,因为我们有两个不

equals()

比较对象请记住,当你创建对象时,变量存储的是对象的引用。所以,当使用(==)比较对象时,它实际上比较的是引用而不是对象值。下面是一个例子:classAnimal{ Stringname; Animal(Stringn){  name=n; }}classMyJavaClass{ publicstaticvoidmain(String[]args){  Animala1=newAnimal("Kitty");  Animala2=newAnimal("Kitty");  System.out.println(a1==a2); }}//输出false提示:尽管有两个名称相同的对象,因为我们有两个不

Java 两个数组比较内容是否相等

需求有两个数组,前提是数组对象是一样的。需要比较这两个数组中对象的值是否一致?需要考虑对象的顺序。如果对象里面在嵌套一个数组怎么处理。实现重写对象equals()和hashcode()方法1.为什么要重写equals()方法?因为object中的equals()方法比较的是对象的引用地址是否相等,当需要判断对象里的内容是否相等,则需要重写equals()方法。2.重写equals()方法为什么要同时重写hashcode()方法?重写equals()方法同时重写hashcode()方法,就是为了保证当两个对象通过equals()方法比较相等时,他们的hashCode值也一定要保证相等。新增两个对