今日学习的文章链接和视频链接
leetcode题目地址:977.有序数组的平方
代码随想录题解地址:代码随想录
看到题目的第一想法(可以贴代码)
遍历数组,使每个元素都^2,再用数组排序函数
public int[] sortedSquares(int[] nums) {
for (int i = 0; i < nums.length; i++){
nums[i] = (int)Math.pow(nums[i], 2);
}
Arrays.sort(nums);
return nums;
}
实现过程中遇到哪些困难
无
看完代码随想录之后的想法
While 循环的解法:
public int[] sortedSquares(int[] nums) {
int len = nums.length;
int i = 0, j = len - 1;
int[] res = new int[len];
int index = len - 1;
while (i <= j){
if (Math.pow(nums[i], 2) > Math.pow(nums[j], 2)){
res[index--] = (int)Math.pow(nums[i], 2);
i++;
}else{
res[index--] = (int)Math.pow(nums[j], 2);
j--;
}
}
return res;
}
For 循环双变量解法:
public int[] sortedSquares(int[] nums) {
int len = nums.length;
int[] res = new int[len];
int index = len - 1;
for (int i = 0, j = len - 1; i<=j;){
if (Math.pow(nums[i], 2) > Math.pow(nums[j], 2)){
res[index--] = (int)Math.pow(nums[i], 2);
i++;
}else{
res[index--] = (int)Math.pow(nums[j], 2);
j--;
}
}
return res;
}
【解题思路】双指针;两边的值平方后永远大于中间的值。
1. for循环里面双变量的写法:注意分号位置
for(int i = 0, j = len-1; i <= j;) 或 for(int i = 0, j = len-1; i <= j; i++, j--)
学习时长
9:48 ~ 10:06 解题成功
10:06 ~ 11:07 看视频题解、写博客
今日收获
1. Java表示次方:(double) Math.pow(double down, double up)
2. Java数组的升序和降序排序:sort()方法是Arrays类的静态方法。
升序:Arrays.sort(int[] arr);
降序:升序后使用arr.reverse()
对数组部分升序:Arrays.sort(int[] a,int fromIndex,int toIndex)
List 升序:Collections.sort(List<> list)
List 降序:Collections.sort(
List<> list,Collections.reverseOrder())
3. Java数据类型转换
将父类转换为子类之前,应该用instanceof二元操作符检查:(boolean)var instanceof dataType
父类引用可以指向子类对象(隐式),子类引用不能指向父类对象(显示)。
把子类对象直接赋给父类引用叫做向上转型,向上转型不用强制转型,如Father f1=new Son(),把指向子类对象的父类引用赋给子类引用叫做向下转型,要强制转型,如Son s1 = (Son)f1。
[向上转型] 会丢失子类特有的方法,但是子类overriding父类的方法,子类方法有效。
【隐式转换】低级自动转换成高级,即“表达式中类型的自动提升”
- 数值型数据的转换:byte→short→int→long→float→double。
- 字符型转换为整型:char→int
【显式转换】(type)variableName
一般转换:
(byte)、(short)、(int)、(long)、(float)、(double)
自动装箱/拆箱:
int 与 Integer 不必强制转换(三目运算结果呈现为Object)
int 与 String 的转换:
int 转 String:s = String.valueOf(i); 直接使用String的静态方法
String 转 int:i = Integer.parseInt(s); 或 i = Integer.valueOf(s).intValue();
Integer 转 String:(Integer) x.toString() 或 Integer.toString(num)