PHP企业网站开发实践,网络服务器地址怎么查,省工程建设信息网,网站代码规范性leetcode 150道题 计划花两个月时候刷完#xff0c;今天#xff08;第二天#xff09;完成了两道(3-4)150#xff1a;
(26. 删除有序数组中的重复项) 题目描述#xff1a;
给你一个 非严格递增排列 的数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使…leetcode 150道题 计划花两个月时候刷完今天第二天完成了两道(3-4)150
(26. 删除有序数组中的重复项) 题目描述
给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。第一版我感觉还可以这个可以搞个通用的
class Solution {public int removeDuplicates(int[] nums) {int lennums.length;if(len1)return len;int index0;int tempnums[0];// 找出第一个 重复的for(int i1;ilen;i){if(tempnums[i]){indexi;break;}else{tempnums[i];}}// 执行调换 按相顺序去重if(index0)return len;for(int iindex;ilen;i){if(temp!nums[i]){nums[index]nums[i];tempnums[i];}}return index;}
}第二版看了之前写的这题我之前也做过了但是这次还是卡了很久但是我感觉第二版没有我第一版好理解不是很好想出来
class Solution {public int removeDuplicates(int[] nums) {int lennums.length;if(len1)return len;int index1;int tempnums[0];for(int i1;ilen;i){if(temp!nums[i]){nums[index]nums[i];tempnums[i];}}return index;}
}4.80. 删除有序数组中的重复项 II 题目描述
给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。第一版这是上一题的延伸版所以我就按我刚写的那样去想了真的我感觉我这个可以作为一个通类但是人家解题的也好像可以。。
class Solution {public int removeDuplicates(int[] nums) {int lennums.length;if(len2)return len;int index0;int tempnums[0];int flag1;for(int i1;ilen;i){if(temp!nums[i]){tempnums[i];flag1;}else{if(flag2){indexi;break;}flag;}}if(index0)return len;for(int iindex;ilen;i){if(temp!nums[i]){nums[index]nums[i];tempnums[i];flag1;}else{flag;if(flag2){nums[index]nums[i];}}}return index;}
}第二版确实很厉害感觉遇到这类题就可以全部这样去弄啊
class Solution {public int removeDuplicates(int[] nums) {int lennums.length;if(len2)return len;int slow2,fast2;while(fastlen){if(nums[slow-2]!nums[fast]){nums[slow]nums[fast];slow;}fast;}return slow;}
}我下来按照第一版思路写了一下这次的 第三题26. 删除有序数组中的重复项确实是模板直接通过了 他是数字只能出现一次第四题是两次
class Solution {public int removeDuplicates(int[] nums) {int lennums.length;if(len1)return len;int slow1,fast1;while(fastlen){if(nums[slow-1]!nums[fast]){nums[slow]nums[fast];slow;}fast;}return slow;}
}学习太累了真的今天差点没心情去搞这个 leetcode 刷视频还是舒服但是为了跳槽加油。