今日学习的文章链接和视频链接
leetcode题目地址:27.移除元素
代码随想录题解地址:代码随想录
看到题目的第一想法(可以贴代码)
之前做过,看了一下感觉解法很暴力,想等会看一下视频
class Solution {
public int removeElement(int[] nums, int val) {
int len = nums.length;
int[] arr = new int[len];
int index = 0;
for(int i : nums){
if(i != val){
arr[index++] = i;
//System.out.println(arr[index-1]);
}
}
for(int i =0;i<index;i++){
nums[i] = arr[i];
}
return index;
}
}
实现过程中遇到哪些困难
无
看完代码随想录之后的想法
1. 数组删除操作在内存中的分布-覆盖
2. C++:erase()函数时间复杂度O(n);Java:remove()删指定,clear()清空
3. 暴力解法O(n^2),双指针O(n),我原先的解法也是O(n) 两个for循环并联
双指针:fast指针用于寻找新数组所需元素;slow指针用于新数组赋值
//双指针想法比我原先的解法速度更快,内存消耗差不多
学习时长
9:55 ~ 10:02 回顾题目
10:02 ~ 10:27 看视频题解
今日收获
Java截取子数组Arrays.copyOfRange(originalArray, 2, 5)