给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。
形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。
示例 1:
输出:[0,2,1,-6,6,-7,9,1,2,0,1]
输出:true
解释:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1
示例 2:
输入:[0,2,1,-6,6,7,9,-1,2,0,1]
输出:false
示例 3:
输入:[3,3,6,5,-2,2,5,1,-9,4]
输出:true
解释:3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4
提示:
3 <= A.length <= 50000
-10000 <= A[i] <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum
思路:先读题 给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。将数组分为和相等的三个部分,我们先计算总和,然后除以3就是每个部分的和,再设定一个目标值,遍历数组,如果目标值依次减去数组中的元素且等于零时,这时,这几个元素就可以成为第一个数组,然后继续,第二个第三个也就出来了,输出就行了。
代码:
class Solution {
public boolean canThreePartsEqualSum(int[] A) {
int sum =0;//总和
for(int num:A){
sum+=num;
}
int key=sum/3;//设定目标值总和除以3
int temp=0;
for(int i=0;i
答案 : A
A 一个类有多个构造方法便是重载的表现。重载参数列表不同。所以A是正确的。
B 构造方法是在对象创建时就被调用,用于初始化。
C 构造方法是给与之对应的对象进行初始化,初始化的动作只执行一次。
D 构造方法必须与所在类的名称同名。
答案:D
A.abstract类不能与final,static使用。final修饰方法,子类可以调用,但不能覆盖。
B.最好不要有private因为私有和抽象放在一起,子类如果想重写父类的私有方法根本继承不过来,也就无法重写
C.抽象类中可以有非抽象方法
D.抽象类中可以都是非抽象的,但是抽象方法一定要在类和接口中
答案:A
super是java提供的一个关键字,super用于限定该对象调用它从父类继承得到的Field或方法。super关键字不能出现在static修饰的方法中,因为static修饰的方法是属于类的。如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的field,而不是该类自己定义的field。需要注意的是,super关键字只能指代直接父类,不能指代父类的父类。
答案:C
JDK8以后,HashMap的数据结构是数组+链表+红黑树
答案:B
默认初始化,基本类型是 0 ,布尔类型是 false ,引用类型为null
所以这里为null
答案:B
子类构造器的默认第一行就是super(),默认调用直接父类的无参构造。这也就是一旦一个子类的直接父类没有无参的构造的情况下,必须在自己构造器的第一行显式的指明调用父类或者自己的哪一个构造器。
答案:B
自己查了一下鲁棒性,鲁棒性(Robust,即健壮性)
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
感觉B选项虽然描述也对,但是,不应该把它归结于鲁棒性,B选项主要是体现Java的由于虚拟机,实现了一次编译,到处运行,跨平台性的特点,不属于鲁特性。
答案:ABD
java不支持运算符重载,但是这题看了一下解析,考的是c++知识。C++语言中的不能重载的操作符是只有.、.、->、::、:这五个运算符不能重载。
答案:G
ABC3 个选项很明显,不同类型引用的 == 比较,会出现编译错误,不能比较。
DEF 调用 equals 方法,因为此方法先是比较类型,而 i , d , l 是不同的类型,所以返回假。
选项 G ,会自动装箱,将 42L 装箱成 Long 类型,所以调用 equals 方法时,类型相同,且值也相同,因此返回真。
答案:ABCD
1.枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)。
2.静态内部类实现模式(线程安全,调用效率高,可以延时加载);
3.Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用);
4.饿汉式(线程安全,调用效率高,但是不能延时加载);懒汉式(线程安全,调用效率不高,但是能延时加载);