You are given a 0-indexed integer array nums. The array nums is
beautiful if:
nums.length is even.
nums[i] != nums[i + 1] for all i % 2 == 0.
Note that an empty array is considered beautiful.
You can delete any number of elements from nums. When you delete an element, all the elements to the right of the deleted element will be shifted one unit to the left to fill the gap created and all the elements to the left of the deleted element will remain unchanged.
Return _theminimum number of elements to delete from _numsto make itbeautiful.
Input: nums =[1,1,2,3,4,4]Output: 2Explanation: After deleting the first `1` and the last `4`, nums =[1,2,3,4].It is beautiful because nums.lengthis even and nums[0]!= nums[1], nums[2]!= nums[3].
Input: nums =[1,1,1,1,1]Output: 2Explanation: After deleting any two elements, nums =[1,1,1].It is beautiful because nums.lengthis even and nums[0]!= nums[1].
Input: nums =[1,2,2,3,3,4,4,5]Output: 2Explanation: After deleting two elements, nums =[1,2,3,4,5].It is beautiful because nums.lengthis even and nums[0]!= nums[1], nums[2]!= nums[3].
We want to build the longest beautiful array by greedily pairing elements such that no two adjacent elements are equal at even indices. We iterate through the array, skipping elements that would violate the condition, and ensure the final array has even length.
classSolution {
public:int minDeletion(vector<int>& nums) {
int del =0, n = nums.size(), i =0;
while (i < n-1) {
if (nums[i] == nums[i+1]) {
del++;
i++;
} else {
i +=2;
}
}
if ((n-del) %2) del++;
return del;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
funcminDeletion(nums []int) int {
del, n, i:=0, len(nums), 0fori < n-1 {
ifnums[i] ==nums[i+1] {
del++i++ } else {
i+=2 }
}
if (n-del)%2!=0 { del++ }
returndel}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution {
publicintminDeletion(int[] nums) {
int del = 0, n = nums.length, i = 0;
while (i < n-1) {
if (nums[i]== nums[i+1]) {
del++;
i++;
} else {
i += 2;
}
}
if ((n-del)%2 != 0) del++;
return del;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution {
funminDeletion(nums: IntArray): Int {
var del = 0; var i = 0; val n = nums.size
while (i < n-1) {
if (nums[i] == nums[i+1]) {
del++ i++ } else {
i +=2 }
}
if ((n-del)%2!=0) del++return del
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution:
defminDeletion(self, nums: list[int]) -> int:
del_cnt, i, n =0, 0, len(nums)
while i < n-1:
if nums[i] == nums[i+1]:
del_cnt +=1 i +=1else:
i +=2if (n-del_cnt) %2:
del_cnt +=1return del_cnt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
impl Solution {
pubfnmin_deletion(nums: Vec<i32>) -> i32 {
letmut del =0;
let n = nums.len();
letmut i =0;
while i < n-1 {
if nums[i] == nums[i+1] {
del +=1;
i +=1;
} else {
i +=2;
}
}
if (n-del)%2!=0 { del +=1; }
del asi32 }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution {
minDeletion(nums: number[]):number {
letdel=0, i=0, n=nums.length;
while (i<n-1) {
if (nums[i] ===nums[i+1]) {
del++;
i++;
} else {
i+=2;
}
}
if ((n-del)%2!==0) del++;
returndel;
}
}