思路:数组的逆序对考题较多,比如示例的数组:[1,2,3,4,5,6,7,0] 那么,它包含逆序对有:{1,0},{2,0},
{3,0},{4,0},{5,0},{6,0},{7,0}总共7个逆序对。再比如数组{7,5,6,4},逆序对总共有5对,{7,5},{7,6},{7,4},{5,4,{6,4};
暴力法:设置两个循环,外层循环逐渐遍历数组,内层循环找到比外层的数,找到一次,coun++;最后返回count。
代码:
public static int count(int[] a,int n){
int count=0;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
count++;
}
}
}
return count;
}
思路:
m=k/3 表示每次可以换的饮料瓶数
count表示可以喝的饮料总数
n=k/3剩余的空瓶数
k=m+n喝的饮料瓶数+空瓶数
代码:
public static int drinkBottle(int nullBottle){
int m=nullBottle;
int n=nullBottle;
int count=0;
int k=nullBottle;
while(k>=2){
if(k==2){
count=count+1;
break;
}
m= k/3;//可以换的饮料瓶数
n= k%3;//剩余的空瓶数
count+=m;
k=m+n;//喝的饮料瓶数+剩余数
}
return count;
}
super关键字的使用:获取到父类实例的引用 调用父类的构造器放在第一行
this关键字的使用:代表当前对象的引用
抽象类:抽象类包含抽象方法,抽象方法没有方法体
- 抽象类不能够实例化
- 抽象方法为public abstract
3.可以包含非抽象的方法,可以摆其他继承和重写,也可包含其他字段
static的作用及使用:
1.修饰属性 :存在于方法区count被static所修饰,所有类共享。且不属于对象,访问方式为:类名 . 属性。
2. 修饰方法:静态方法(类方法)
- 静态方法属于类,而不属于类的对象。
- 可以直接调用静态方法,而无需创建类的实例。
- 静态方法可以访问静态数据成员,并可以更改静态数据成员的值
- 注意事项1: 静态方法和实例无关, 而是和类相关. 因此这导致了两个情况:
静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法都是和实例相关的).
this和super两个关键字不能在静态上下文中使用(this 是当前实例的引用, super是当前实例父类实例的引用, 也
是和当前实例相关). - 注意事项2 我们曾经写的方法为了简单, 都统一加上了 static. 但实际上一个方法具体要不要带 static,
都需要是情形而定.main 方法为 static 方法.
3.修饰类
访问本类中的属性和方由子类访问父类中的属
String toUpercase( ):字符串中小写字母转化为大写
String toLowercase( ):字符串中小写字母转化为小写
引用类型==引用类型 默认引用equals()比较引用对象的地址
普通方法中不能调用静态方法和变量