网站建设维护资质,2023年电商平台排行榜,建设工程质量检测公司网站,下载应用商店app并安装到手机上力扣每日一题#xff1a;美化数组的最少删除数
开篇 今天的力扣每日一题居然写出来了#xff0c;好开心#xff0c;迫不及待地把题目分享出来#xff0c;希望你也能把它狠狠拿下。
题目链接: 2216.美化数组的最少删除数
题目描述 代码思路 创建一个list集合来保存数组美化数组的最少删除数
开篇 今天的力扣每日一题居然写出来了好开心迫不及待地把题目分享出来希望你也能把它狠狠拿下。
题目链接: 2216.美化数组的最少删除数
题目描述 代码思路 创建一个list集合来保存数组方便删除操作。在集合中根据题目要求对偶数下标的元素进行判断然后删除不符合要求的元素并统计删除次数。最后返回删除次数即可。
代码纯享版
class Solution {public int minDeletion(int[] nums) {int sum 0;ListInteger list new ArrayList();for(int num: nums) list.add(num);for(int i 0; i list.size() - 1; i){if(i % 2 0 list.get(i).equals(list.get(i 1))){list.remove(i);i--;sum;}}if(list.size() % 2 ! 0) sum;return sum;}
}代码逐行解析版
class Solution {public int minDeletion(int[] nums) {int sum 0;//统计删除数量ListInteger list new ArrayList(); //创建list集合方便删除操作for(int num: nums) list.add(num); //将数组元素全部添加到list中用list来进行下面操作for(int i 0; i list.size() - 1; i){ //因为下面会比较到i1下标所以这里是i list.size() - 1if(i % 2 0 list.get(i).equals(list.get(i 1))){ //寻找需要被删除的元素list.remove(i); //删除该元素i--; //删掉一个数后会左移1位sum;//删除数量加1}}if(list.size() % 2 ! 0) sum; //如果数组长度不是偶数要再删掉一个return sum;//返回删除的数量}其它解法 只能说大佬的代码总是优雅整洁又高效的这个for循环中的ii2简直是让我醍醐灌顶
// 贪心总是优先删除数组靠前的元素
class Solution {public int minDeletion(int[] nums) {int n nums.length, res 0;// 进入的i总是作为奇数位for(int i 1; in; i i2){if(nums[i] nums[i-1]){res;i--;}}return (n - res) % 2 0 ? res : res 1;}结语 如果对这道题的分享对您有帮助点个关注我会每天分享力扣题的讲解与大伙儿一起向前迈进。