Skip to content
  • Home
  • Contact Us
  • About Us
  • Privacy Policy
  • DMCA
  • Linkedin
  • Pinterest
  • Facebook
thecscience

TheCScience

TheCScience is a blog that publishes daily tutorials and guides on engineering subjects and everything that related to computer science and technology

  • Home
  • Human values
  • Microprocessor
  • Digital communication
  • Linux
  • outsystems guide
  • Toggle search form
HackerRank Larry's Array Problem Solution

HackerRank Larry’s Array Problem Solution

Posted on April 22, 2023April 28, 2023 By Yashwant Parihar No Comments on HackerRank Larry’s Array Problem Solution

In this post, we will solve HackerRank Larry’s Array Problem Solution.

Larry has been given a permutation of a sequence of natural numbers incrementing from 1 as an array. He must determine whether the array can be sorted using the following operation any number of times:

  • Choose any 3 consecutive indices and rotate their elements in such a way that ABC BCA → CAB → ABC.
    For example, if A = {1, 6, 5, 2, 4, 3}:
A		rotate 
[1,6,5,2,4,3]	[6,5,2]
[1,5,2,6,4,3]	[5,2,6]
[1,2,6,5,4,3]	[5,4,3]
[1,2,6,3,5,4]	[6,3,5]
[1,2,3,5,6,4]	[5,6,4]
[1,2,3,4,5,6]

YES

On a new line for each test case, print YES if A can be fully sorted. Otherwise, print NO.

Function Description

Complete the larrysArray function in the editor below. It must return a string, either YES or NO.

larrysArray has the following parameter(s):

  • A: an array of integers

Input Format
The first line contains an integer t, the number of test cases.
The next t pairs of lines are as follows:

  • The first line contains an integer n, the length of A.
  • The next line contains n space-separated integers A[i].

Output Format
For each test case, print YES if A can be fully sorted. Otherwise, print NO.

Sample Input

3
3
3 1 2
4
1 3 4 2
5
1 2 3 5 4

Sample Output

YES
YES
NO

Explanation
In the explanation below, the subscript of A denotes the number of operations performed.
Test Case 0:
Ao = {3, 1, 2}→ rotate(3, 1, 2)→ A₁ = {1,2,3}
A is now sorted, so we print Yes on a new line.
Test Case 1:
Ao = {1,3,4,2}→ rotate(3, 4, 2)→ A₁ = {1, 4, 2, 3}. A₁ = {1, 4, 2, 3} → rotate(4, 2, 3) → A₂ = {1, 2, 3, 4}.
A is now sorted, so we print Yes on a new line.
Test Case 2:
No sequence of rotations will result in a sorted A. Thus, we print No on a new line.

HackerRank Larry's Array Problem Solution
HackerRank Larry’s Array Problem Solution

Table of Contents

  • Larry’s Array C Solution
  • Larry’s Array C++ Solution
  • Larry’s Array C Sharp Solution
  • Larry’s Array Java Solution
  • Larry’s Array JavaScript Solution
  • Larry’s Array Python Solution

Larry’s Array C Solution

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {

    /* Enter your code here. Read input from STDIN. Print output to STDOUT */  
    int testcases;
    scanf("%d", &testcases);
    //printf ("%d", testcases);
    int cases = 0;
    while (cases < testcases) {
        int len;
        scanf("%d", &len);
        int value[len-1];
        int i = 0;
        while (i < len){
            scanf("%d", &value[i]);
            i++;
        }
        i = 0;
        int temp = 0;
        while (i < len) {
            int j = i+1;
            while (j < len) {
                if (value[i] > value[j]) {
                    temp++;
                }
                j++;
            }
            i++;
        }
        if (temp%2 == 0) {
            printf("YES\n");
        } else {
            printf("NO\n");
        }
        cases++;
    }
    return 0;
}

Larry’s Array C++ Solution

#include <stdio.h>
#include <assert.h>

typedef unsigned int uint_t;
const uint_t T = 10, N = 1000;

static uint_t calc_invs(const uint_t *as, uint_t n) {
    uint_t res = 0;
    for (uint_t i = 1; i < n; i++) {
        for (uint_t j = 0; j < i; j++)
            res += (as[j] > as[i]);
    }
    return res;
}

static uint_t as[N];

int main() {
    uint_t t;
    int st = scanf("%u", &t);
    assert (st == 1);
    assert (0 < t && t <= T);
    for (uint_t i = 0; i < t; i++) {
        uint_t n;
        st = scanf("%u", &n);
        assert (3 <= n && n <= N);
        for (uint_t j = 0; j < n; j++) {
            st = scanf("%u", &as[j]);
            assert (st == 1);
            assert (0 < as[j] && as[j] <= n);
        }
        uint_t res = calc_invs(as, n) & 1;
        printf("%s\n", res ? "NO" : "YES");
    }
    
    return 0;
}

Larry’s Array C Sharp Solution

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {
    static void Main(String[] args) {
        int t = Convert.ToInt32(Console.ReadLine());
            for(int i=0; i<t; i++)
            {
                int n = Convert.ToInt32(Console.ReadLine());
                string[] temp = Console.ReadLine().Split(' ');
                int[] arr = Array.ConvertAll(temp,Int32.Parse);
                int[] cnt = new int[n];
                try
                {
                    for(int j=0; j<n; j++)
                    {
                        int sum=0;
                        for(int k =j+1; k<n; k++)
                        {
                            if (arr[j] > arr[k])
                            sum++;
                        }
                        cnt[j] = sum;
                    }
                }
                catch
                {

                }
                if (cnt.Sum() % 2 == 0)
                    Console.WriteLine("YES");
                else
                    Console.WriteLine("NO");
            }
    }
}

Larry’s Array Java Solution

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner scan = new Scanner(System.in);
        int c = Integer.parseInt(scan.nextLine());
        for(int i=0;i<c;i++){
            int n = Integer.parseInt(scan.nextLine());
            String[] sp = scan.nextLine().split("\\s+");
            LinkedList<Integer> ll = new LinkedList<Integer>();
            for(int j=0;j<n;j++)ll.add(Integer.parseInt(sp[j]));
            for(int j=0;j<n-2;j++){
                if(ll.get(j)!=j+1){
                    int index = findIndex(ll,j+1);
                    if((index-j)%2==0){
                        int val = ll.remove(index);
                        ll.add(j,val);
                    }
                    else{
                        int val =ll.remove(index);
                        ll.add(j,val);
                        int tmp = ll.remove(j+2);
                        ll.add(j+1,tmp);
                        
                    }
                }
            }
            String res = "YES";
            if(ll.get(n-1) != n)res = "NO";
            System.out.println(res);
        }
    }
    public static int findIndex(LinkedList<Integer> ll, int val){
        for(int i=val;i<ll.size();i++)if(ll.get(i)==val)return i;
            return -1;
    }
}

Larry’s Array JavaScript Solution

function processData(input) {
    input = input.split("\n");
    var cases = Number(input[0]);
    for (var t=0;t<cases;t++) {
        var a = input[t*2+2].split(" ").map(Number);
        for (var i=1;i<=a.length-2;i++) {
            //move i to ith place
            //console.log("moving: "+i);
            //if i is in last place: 
            if (a.indexOf(i)==a.length-1) {
                //console.log("i is in last place, moving it to 2nd to last")
                a[a.length-1] = a[a.length-3];
                a[a.length-3] = a[a.length-2];
                a[a.length-2] = i;
                //console.log(a);
            }
            var moves = a.indexOf(i)+1-i;
            //console.log("moves: "+moves);
            for (var m=0;m<moves;m++) {
                var ri = a.indexOf(i);
                a[ri] = a[ri+1];
                a[ri+1] = a[ri-1];
                a[ri-1] = i;
            }
            //console.log(a);
        }
        if (final3(a)) {
            console.log("YES");
        } else {
            console.log("NO");
        }
    }
} 

function final3(a) {
    return (a[a.length-1]>a[a.length-2]&&a[a.length-2]>a[a.length-3])
}

process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});

process.stdin.on("end", function () {
   processData(_input);
});

Larry’s Array Python Solution

def rotate(arr, i):
    tmp = arr[i]
    arr[i] = arr[i+1]
    arr[i+1] = arr[i+2]
    arr[i+2] = tmp

def testcase(arr):
    for upto in range(len(arr) - 2, 0, -1):
        for start in range(upto):
            highest = max(arr[start:start+3])
            if arr[start] == highest:
                rotate(arr, start)
            elif arr[start+1] == highest:
                rotate(arr, start)
                rotate(arr, start)
            else:
                pass
    # Now, we need to check the first 3 elements.
    if arr[0] < arr[1] < arr[2]:
        print('YES')
    else:
        print('NO')

testcases = int(input().strip())
for t in range(testcases):
    n = int(input().strip())
    arr = [int(x) for x in input().strip().split()]
    testcase(arr)

Other Solutions

  • HackerRank Almost Sorted Problem Solution
  • HackerRank Matrix Layer Rotation Solution
c, C#, C++, HackerRank Solutions, java, javascript, python Tags:C, cpp, CSharp, Hackerrank Solutions, java, javascript, python

Post navigation

Previous Post: HackerRank Ema’s Supercomputer Solution
Next Post: HackerRank Almost Sorted Problem Solution

Related Posts

HackerRank Crab Graphs Problem Solution HackerRank Crab Graphs Problem Solution c
HackerRank Divisible Sum Pairs Problem Solution HackerRank Divisible Sum Pairs Problem Solution c
HackerRank Super Reduced String Problem Solution HackerRank Super Reduced String Solution c
HackerRank Modified Kaprekar Numbers Problem Solution HackerRank Modified Kaprekar Numbers Solution c
HackerRank Time Conversion Problem Solution HackerRank Time Conversion Problem Solution c
HackerRank Roads in HackerLand Problem Solution HackerRank Roads in HackerLand Solution c

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Pick Your Subject
Human Values

Copyright © 2023 TheCScience.

Powered by PressBook Grid Blogs theme