查找反复的字符串

it2025-07-16  5

给定一个长度为n的数组,其元素也在【0 n-1】范围内,推断当中是否包括反复元素。

#include <stdio.h>  

#include <stdlib.h>  #include<iostream> #include<string> using namespace std; bool find_repeat(int *s,int len) { int max(s[0]),min(s[0]); if(len==0) return false;     for(int i=1;i<len;i++)   {     if(s[i]>max) {    max=s[i]; } else if(s[i]<min) {    min=s[i]; }   } int temp=max-min; if(temp==0) {  return true; } for(int i=0;i<len;i++) {   s[i]=s[i]-min; } //int i=0; for(int i=0;i<len;i++) {   while(s[i]!=i)   {     if(s[s[i]]==s[i]) return true; else {    int temp=s[i]; s[i]=s[temp]; s[temp]=temp; }   } } return false; } int main() { int a[]={3,5,2,-1,1,0,4}; if(find_repeat(a,7)) cout<<"repeat true"<<endl; else  cout<<"no repeat"<<endl; for(int i=0;i<7;i++) cout<<a[i]<<" "; cout<<endl; return 0; }

转载于:https://www.cnblogs.com/bhlsheji/p/5126761.html

最新回复(0)