Рубрики

Найти элемент Kth в массиве, содержащем сначала нечетные элементы, а затем четные элементы

Дана длина массива целых чисел N и целого числа K. Задача состоит в том, чтобы изменить массив таким образом, чтобы массив содержал сначала все нечетные целые числа от 1 до N в порядке возрастания, затем все четные целые числа от 1 до N в порядке возрастания, а затем печатал K- й элемент в модифицированном массиве.

Примеры:

Input: N = 8, K = 5
Output: 2
The array will be {1, 3, 5, 7, 2, 4, 6, 8}
and the fifth element is 2.

Input: N = 7, K = 2
Output: 3

Наивный подход. Простой подход заключается в том, чтобы сначала сохранить нечетные числа, одно за другим до N, а затем сохранить четные числа одно за другим до N , а затем распечатать k-й элемент.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация подхода
#include <bits/stdc++.h>

using namespace std;

  
// Функция для возврата k-го элемента
// в модифицированном массиве

int getNumber(int n, int k)

{

    int arr[n];

  

    int i = 0;

  

    // Первый нечетный номер

    int odd = 1;

    while (odd <= n) {

  

        // Вставляем нечетное число

        arr[i++] = odd;

  

        // Следующее нечетное число

        odd += 2;

    }

  

    // Первый четный номер

    int even = 2;

    while (even <= n) {

  

        // Вставить четное число

        arr[i++] = even;

  

        // Следующий четный номер

        even += 2;

    }

  

    // Возвращаем k-й элемент

    return arr[k - 1];

}

  
// Код драйвера

int main()

{

    int n = 8, k = 5;

    cout << getNumber(n, k);

  

    return 0;

}

Джава

// Java реализация подхода

class GFG 

{

  
// Функция для возврата k-го элемента
// в модифицированном массиве

static int getNumber(int n, int k)

{

    int []arr = new int[n];

  

    int i = 0;

  

    // Первый нечетный номер

    int odd = 1;

    while (odd <= n)

    {

  

        // Вставляем нечетное число

        arr[i++] = odd;

  

        // Следующее нечетное число

        odd += 2;

    }

  

    // Первый четный номер

    int even = 2;

    while (even <= n)

    {

  

        // Вставить четное число

        arr[i++] = even;

  

        // Следующий четный номер

        even += 2;

    }

  

    // Возвращаем k-й элемент

    return arr[k - 1];

}

  
// Код драйвера

public static void main(String[] args)

{

    int n = 8, k = 5;

    System.out.println(getNumber(n, k));

}

  
// Этот код предоставлен 29AjayKumar

python3

# Python3 реализация подхода

  
# Функция для возврата k-го элемента
# в измененном массиве

def getNumber(n, k):

    arr = [0] * n;

  

    i = 0;

  

    # Первый нечетный номер

    odd = 1;

    while (odd <= n):

          

        # Вставьте нечетное число

        arr[i] = odd;

        i += 1;

  

        # Следующий нечетный номер

        odd += 2;

  

    # Первый четный номер

    even = 2;

    while (even <= n):

        # Вставьте четное число

        arr[i] = even;

        i += 1;

  

        # Следующий четный номер

        even += 2;

  

    # Вернуть k-й элемент

    return arr[k - 1];

  
# Код драйвера

if __name__ == '__main__':

    n = 8;

    k = 5;

    print(getNumber(n, k));

  
# Этот код предоставлен Rajput-Ji

C #

// C # реализация подхода

using System;

      

class GFG 

{

  
// Функция для возврата k-го элемента
// в модифицированном массиве

static int getNumber(int n, int k)

{

    int []arr = new int[n];

  

    int i = 0;

  

    // Первый нечетный номер

    int odd = 1;

    while (odd <= n)

    {

  

        // Вставляем нечетное число

        arr[i++] = odd;

  

        // Следующее нечетное число

        odd += 2;

    }

  

    // Первый четный номер

    int even = 2;

    while (even <= n)

    {

  

        // Вставить четное число

        arr[i++] = even;

  

        // Следующий четный номер

        even += 2;

    }

  

    // Возвращаем k-й элемент

    return arr[k - 1];

}

  
// Код драйвера

public static void Main(String[] args)

{

    int n = 8, k = 5;

    Console.WriteLine(getNumber(n, k));

}

  
// Этот код предоставлен PrinciRaj1992

Выход:

2

Эффективный подход: найдите индекс, в котором первый четный элемент будет сохранен в сгенерированном массиве. Теперь, если значение k меньше или равно индексу, тогда желаемое число будет k * 2 — 1, иначе желаемое число будет (k — index) * 2

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация подхода
#include <bits/stdc++.h>

using namespace std;

  
// Функция для возврата k-го элемента
// в модифицированном массиве

int getNumber(int n, int k)

{

    int pos;

  

    // Находим индекс откуда

    // четные числа будут сохранены

    if (n % 2 == 0) {

        pos = n / 2;

    }

    else {

        pos = (n / 2) + 1;

    }

  

    // Возвращаем k-й элемент

    if (k <= pos) {

        return (k * 2 - 1);

    }

    else

  

        return ((k - pos) * 2);

}

  
// Код драйвера

int main()

{

    int n = 8, k = 5;

  

    cout << getNumber(n, k);

  

    return 0;

}

Джава

// Java реализация подхода

import java.io.*;

  

class GFG

{

      
// Функция для возврата k-го элемента
// в модифицированном массиве

static int getNumber(int n, int k)

{

    int pos;

  

    // Находим индекс откуда

    // четные числа будут сохранены

    if ((n % 2) == 0

    {

        pos = n / 2;

    }

    else 

    {

        pos = (n / 2) + 1;

    }

  

    // Возвращаем k-й элемент

    if (k <= pos)

    {

        return (k * 2 - 1);

    }

    else

        return ((k - pos) * 2);

}

  
// Код драйвера

public static void main (String[] args)

{

    int n = 8, k = 5;

    System.out.println (getNumber(n, k));

}
}

  
// Этот код предоставлен @tushil.

python3

# Python3 реализация подхода

  
# Функция для возврата k-го элемента
# в измененном массиве

def getNumber(n, k) : 

  

    # Нахождение индекса откуда

    # четные числа будут сохранены

    if (n % 2 == 0) : 

        pos = n // 2

      

    else :

        pos = (n // 2) + 1

  

    # Вернуть k-й элемент

    if (k <= pos) :

        return (k * 2 - 1); 

          

    else :

        return ((k - pos) * 2); 

  
# Код драйвера

if __name__ == "__main__" :

    n = 8; k = 5;

      

    print(getNumber(n, k)); 

  
# Этот код предоставлен AnkitRai01

C #

// C # реализация подхода

using System;

  

class GFG

{

          
// Функция для возврата k-го элемента
// в модифицированном массиве

static int getNumber(int n, int k)

{

    int pos;

  

    // Находим индекс откуда

    // четные числа будут сохранены

    if ((n % 2) == 0) 

    {

        pos = n / 2;

    }

    else

    {

        pos = (n / 2) + 1;

    }

  

    // Возвращаем k-й элемент

    if (k <= pos)

    {

        return (k * 2 - 1);

    }

    else

        return ((k - pos) * 2);

}

  
// Код драйвера

static public void Main ()

{

    int n = 8, k = 5;

    Console.Write(getNumber(n, k));

}
}

  
// Этот код предоставлен @ajit.

Выход:

2

Рекомендуемые посты:

Найти элемент Kth в массиве, содержащем сначала нечетные элементы, а затем четные элементы

0.00 (0%) 0 votes