手机端企业网站怎么做,东莞常平火车站叫什么,烟台百度建网站,360排名优化我的做法#xff1a; 使用一个index作为检查坐标#xff0c;当index为偶数时检查当前数和后一个数是否相等#xff0c;相等的话#xff0c;后一个数设置为-1#xff0c;注意如果相等#xff0c;要把相等的数保留下来last#xff0c;以便接下来检查#xff0c;防止出现2…我的做法 使用一个index作为检查坐标当index为偶数时检查当前数和后一个数是否相等相等的话后一个数设置为-1注意如果相等要把相等的数保留下来last以便接下来检查防止出现2333这种连续的情况但是当接下来检查通过要及时把保留数last变回初识值。另外要注意遍历到数组最后一个元素时就不用判断了。
class Solution {
public:int minDeletion(vectorint nums) {int cnt 0;int n nums.size();int index -1, last -1;for (int i 0; i n; i) {if (nums[i] last index % 2 0) {nums[i] -1;cnt;} else if (nums[i] ! -1) {index;} else {continue;}if (i n - 1) break;if (index % 2 0) {if (nums[i] nums[i 1]) {nums[i 1] -1;last nums[i];cnt;} else {continue;}} else {continue;}}if ((index 1) % 2 ! 0) {cnt;}return cnt;}
};其中很多continue语句可以省略。 更简单的写法 其实相当于用cnt代替index进行计数了变换后的数组长度等于n-cnt
class Solution {
public:int minDeletion(vectorint nums) {int n nums.size(), cnt 0;for (int i 0; i n; i) {if (i n - 1 (i - cnt) % 2 0 nums[i] nums[i 1]) {cnt;}}return (n - cnt) % 2 0 ? cnt: cnt 1;}
};