> 백엔드 개발 > C++ > C++에서 정렬되지 않은 배열의 요소 시작 및 끝 인덱스 찾기

C++에서 정렬되지 않은 배열의 요소 시작 및 끝 인덱스 찾기

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2023-08-29 10:17:06
앞으로
1106명이 탐색했습니다.

C++에서 정렬되지 않은 배열의 요소 시작 및 끝 인덱스 찾기

이 문제에서는 n개의 정렬되지 않은 정수 값과 정수 val을 포함하는 배열 aar[]를 얻습니다. 우리의 임무는 정렬되지 않은 배열에 있는 요소의 시작 및 끝 인덱스 를 찾는 것입니다.

배열에서 요소가 발견되면

"시작 인덱스 및 끝 인덱스" (배열에서 두 번 이상 발견된 경우)를 반환합니다.

"단일 인덱스" 발견된 경우

"요소가 존재하지 않음" 배열에 존재하지 않는 경우.

문제를 이해하기 위해 예를 들어 보겠습니다.

예제 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5
로그인 후 복사

설명

요소 2가 두 번 나타납니다.

첫 번째는 인덱스 = 0,

두 번째는 인덱스 = 5

예제 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2
로그인 후 복사

설명

요소 5는 인덱스 = 2에서 한 번만 나타납니다.

예제 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!
로그인 후 복사

해결책

이 문제를 해결하는 간단한 방법은 배열을 반복하는 것입니다.

배열을 반복하고 두 개의 인덱스 값인 첫 번째와 마지막을 유지합니다. 첫 번째 인덱스는 배열의 처음부터 순회하고, 마지막 인덱스는 배열의 끝부터 순회합니다. 첫 번째 인덱스와 마지막 인덱스의 요소가 동일한 값을 가지면 루프가 종료됩니다.

Algorithm

  • 1단계 - 배열을 통해 루프

    • 1.1단계 - 처음부터 순회하려면 첫 번째 인덱스를 사용하고 끝부터 순회하려면 마지막 인덱스를 사용합니다.

    • 1.2단계 - 임의의 인덱스 값이 val과 같은 경우. 인덱스 값을 늘리지 마십시오.

    • 1.3단계 - 두 인덱스의 값이 동일한 경우 반환합니다.

    • < /ul>

    예제

    저희 솔루션의 작동 방식을 보여주는 프로그램

    #include <iostream>
    using namespace std;
    
    void findStartAndEndIndex(int arr[], int n, int val) {
       int start = 0;
       int end = n -1 ;
       while(1){
       if(arr[start] != val)
          start++;
       if(arr[end] != val)
          end--;
       if(arr[start] == arr[end] && arr[start] == val)
          break;
       if(start == end)
          break;
    }
       if (start == end ){
          if(arr[start] == val)
             cout<<"Element is present only once at index : "<<start;
          else
             cout<<"Element Not Present in the array";
       } else {
          cout<<"Element present twice at \n";
          cout<<"Start index: "<<start<<endl;
          cout<<"Last index: "<<end;
       }
    }
    int main() {
       int arr[] = { 2, 1, 5, 4, 6, 2, 9, 0, 2, 3, 5 };
       int n = sizeof(arr) / sizeof(arr[0]);
       int val = 2;
       findStartAndEndIndex(arr, n, val);
       return 0;
    }
    로그인 후 복사

    Output

    Element present twice at
    Start index: 0
    Last index: 8
    로그인 후 복사

    위 내용은 C++에서 정렬되지 않은 배열의 요소 시작 및 끝 인덱스 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿