给定一个包含不同元素的数组arr[] ,任务是检查是否可以通过选择任意两个相邻的索引使得arr[i] < arr[i+1]并删除两个元素之一来检查是否可以删除所有数组元素或都在每一步。如果可能,则打印“是” 。否则,打印“否” 。
例子:
Input: arr[] = {2, 8, 6, 1, 3, 5}
Output: Yes
Explanation:
Select arr[4] and arr[5]. Since 3 < 5, remove 3, thus modifying the array arr[] = {2, 8, 6, 1, 5}
Select arr[0] and arr[1]. Since 2 < 8, remove 8, thus modifying the array arr[] = {2, 6, 1, 5}
Select arr[0] and arr[1]. Since 2 < 6, remove both 2 and 6, thus modifying the array arr[] = {1, 5}
Select arr[0] and arr[1]. Since 1 < 5, remove both 1 and 5, thus modifying the array arr[] = {}
Input: arr[] = {6, 5, 1}
Output: NO
天真的方法:
这个想法是考虑给定数组中的所有相邻对,如果它满足给定条件,则删除这些数字之一并重复此过程,直到删除所有元素。如果可能,则打印“是” 。否则打印“否” 。
时间复杂度: O(N 2 )
辅助空间: O(1)
有效的方法:
由于数组的元素是不同的,可以观察到如果数组的第一个元素小于数组的最后一个元素,则可以删除数组的所有元素。否则,无法删除给定数组的所有元素。
请按照以下步骤解决问题:
- 检查是否arr[0] < arr[n – 1] ,打印“Yes” 。
- 否则,打印“否” 。
下面是上述方法的实现:
C++
// C++ program to implement
// the above approach
#include
using namespace std;
// Function to check if it is possible
// to remove all array elements
void removeAll(int arr[], int n)
{
// Condition if we can remove
// all elements from the array
if (arr[0] < arr[n - 1])
cout << "YES";
else
cout << "NO";
}
// Driver Code
int main()
{
int Arr[] = { 10, 4, 7, 1, 3, 6 };
int size = sizeof(Arr) / sizeof(Arr[0]);
removeAll(Arr, size);
return 0;
}
Java
// Java program to implement
// the above approach
class GFG{
// Function to check if it is possible
// to remove all array elements
static void removeAll(int arr[], int n)
{
// Condition if we can remove
// all elements from the array
if (arr[0] < arr[n - 1])
System.out.print("YES");
else
System.out.print("NO");
}
// Driver Code
public static void main(String[] args)
{
int Arr[] = { 10, 4, 7, 1, 3, 6 };
int size = Arr.length;
removeAll(Arr, size);
}
}
// This code is contributed by Rohit_ranjan
Python3
# Python3 program to implement
# the above approach
# Function to check if it is possible
# to remove all array elements
def removeAll(arr, n):
# Condition if we can remove
# all elements from the array
if arr[0] < arr[n - 1]:
print("YES")
else:
print("NO")
# Driver code
arr = [ 10, 4, 7, 1, 3, 6 ]
removeAll(arr, len(arr))
# This code is contributed by dipesh99kumar
C#
// C# program to implement
// the above approach
using System;
class GFG{
// Function to check if it is possible
// to remove all array elements
static void removeAll(int []arr, int n)
{
// Condition if we can remove
// all elements from the array
if (arr[0] < arr[n - 1])
Console.Write("YES");
else
Console.Write("NO");
}
// Driver Code
public static void Main(String[] args)
{
int []Arr = { 10, 4, 7, 1, 3, 6 };
int size = Arr.Length;
removeAll(Arr, size);
}
}
// This code is contributed by amal kumar choubey
Javascript
NO
时间复杂度: O(1)
辅助空间: O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。