C++程序 已排序数组中最后一个重复元素

C++程序 已排序数组中最后一个重复元素

我们有一个有重复元素的已排序数组,并且我们必须找到最后一个重复元素的索引并打印它的索引,并打印出重复元素。如果找不到这样的元素,则打印一个消息。

例如:

输入:arr[] = {1, 5, 5, 6, 6, 7}
输出:
Last index: 4
Last duplicate item: 6

输入:arr[] = {1, 2, 3, 4, 5}
输出:未找到重复项

我们只需从数组中逆向迭代并比较当前和前一个元素。如果找到匹配,则打印索引和重复元素。因为这是排序数组,所以它将是最后一个重复项。如果找不到这样的元素,则会打印相应的消息。

1- for i = n-1 to 0
if (arr[i] == arr[i-1])
Print current element and its index.
Return
2- 如果找不到这样的元素,则打印无重复项的消息。

//打印已排序数组中最后一个重复元素及其
//索引
#include
 
void dupLastIndex(int arr[],int n){
 
  //如果数组为空或大小小于等于0,则返回
  if(arr==NULL||n<=0)
    return;
   
  //比较元素并返回最后的
  //重复及其索引
  for(int i=n-1;i>0;i--){
    if(arr[i]==arr[i-1]){
      printf("Last index: %d
Last "
            "duplicate item: %d
",i,arr[i]);
      return;
    }
  }
 
  //如果到达这里,则未发现重复
  //找到。
  printf("未找到重复项");
}
 
int main(){
  int arr[]={1,5,5,6,6,7,9};
  int n=sizeof(arr)/sizeof(int);
  dupLastIndex(arr,n);
  return 0;
}  

输出:

Last index: 4
Last duplicate item: 6

时间复杂度: O(n),其中n表示给定数组的大小。

辅助空间: O(1),不需要额外的空间,因此它是一个常数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例