【力扣/牛客刷题】27. 移除元素 || 26. 删除有序数组中的重复项 || 88. 合并两个有序数组
作者:✿✿ xxxflower. ✿✿
博客主页:xxxflower的博客
专栏:【力扣/牛客刷题】篇
语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐
题目OJ链接:27.移除元素
【分析题目】我们首先需要来判断一下这个数组是否为空或者数组的长度是否为0,如果是的话,不用计算直接返回0;
然后,我们可以定义一个数字 i 和 j 。i 表示数组原来的下标。j 表示数组新的下标。用一个循环遍历数组,用 if 语句来判断一下 nums中的元素是否为val,不是val 则存到位 j 下标中。以上,我们可以得到代码:
class Solution {
public int removeElement(int[] nums, int val) {
if(nums == null || nums.length == 0){
return 0;
}
int j = 0 ;
for(int i = 0;i < nums.length; i++){
if(nums[i] != val){
nums[j] = nums[i];
j++;
}
}
return j;
}
}
题目OJ链接:26. 删除有序数组中的重复项
【分析题目】这是一个升序数组,因此不需要考虑排序的问题。
以上,我们可以得到代码:
class Solution {
public int removeDuplicates(int[] nums) {
int j = 0;
for(int i = 1;i < nums.length;i++){
if(nums[j] != nums[i]){
nums[++j] = nums[i];
}
}
return j+1;
}
}
题目OJ链接:88. 合并两个有序数组
【分析题目】此题可以偷(只因)机取巧。大聪明必备(bushi)
我们可以直接把nums2放到nums1中0位置处,在用Arrays.sort();快排直接解决。
以上:
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int j = 0;
int i = 0;
for(i = m,j = 0;i < nums1.length;i++){
nums1[i] = nums2[j];
j++;
}
Arrays.sort(nums1);
}
}
好啦。今天的做题就到这里8️⃣,每日“一”题。