📜  Sopra Steria 面试经历

📅  最后修改于: 2022-05-13 01:58:37.466000             🧑  作者: Mango

Sopra Steria 面试经历

今天,我被要求在 Sopra Steria 面试。约 100 人在面试过程中在场。第一轮作为技术测试,包括来自hackersearth网站的2个复杂问题。虽然我在第一轮失败了。我试图解决一个问题,我解决了 80%,但无法进入第二轮。下面给出了我尝试的问题以及解决方案,以便您可以发布并且任何人都可以获得帮助。

Q. 1 您必须使用以下 sysntax 从输入设备获取输入:

第 1 行:T 要检查的测试用例数。

第 2 行:数组计数。

第 3 行:数组的元素数量。

第 4 行:要找到的第 K 个最大元素。如果没有找到返回-1。

第 2、3 和 4 行将相应地重复我们在第 1 行中输入的内容。

规则:我们需要找到蚂蚁 2 数字的差异,如果它不存在,那么我们应该将它添加到给定的数组中。所以我们最后会在数组中出现所有数字差异。

例如:输入:
1
5
1 3 5 6 7
2
1
1
2

输入:第 1 行是:我们要通过 2 个测试用例。
第 2 行:第一个数组的数组大小。
第 3 行:由空格分隔的数组元素
第 4 行:需要找出第二大元素。
第 5 行:测试用例 2 的第二个数组的数组大小。
第 6 行:数组元素
第 7 行:要找到的第二大元素

输出 :
6
-1

解决方案:

package soptasteria;
  
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
  
public class Test {
    public static void main(String[] args) throws IOException
    {
        Scanner sc = new Scanner(System.in);
        int testCasesCount = sc.nextInt();
        int[] result = new int[testCasesCount];
        for (int i = 0; i < testCasesCount; i++) {
            int arraySize = sc.nextInt();
            // System.err.println("Enter arr element after arr size");
  
            // System.err.println("Array Entered : "+sc.nextLine());
  
            sc.nextLine();
  
            String[] strArr = sc.nextLine().split(" ");
  
            int[] array = makeArrayOfInteger(strArr);
  
            // System.out.println("Printing integer array");
  
            int kth = sc.nextInt();
  
            // System.out.println("Array Entered : ");
  
            printArray(array, arraySize);
  
            result[i] = goForBusiness(array, arraySize, kth);
  
            // System.out.println("Result : "+result[i]);
        }
  
        System.out.println("Output : ");
  
        for (int i = 0; i < testCasesCount; i++) {
            System.out.println(result[i]);
        }
    }
  
    private static int goForBusiness(int arr[], int len, int kthLargest)
    {
  
        int lastIndex = len;
  
        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
  
                int d = Math.abs(arr[i] - arr[j]);
  
                // System.out.println("Checked "+i+"th and "+j+"th element with differnece : "+d);
                if (!searchInArray(arr, lastIndex, d)) {
                    arr[lastIndex++] = d;
                }
            }
        }
  
        Arrays.sort(arr, 0, lastIndex);
        // System.out.print("After Sort : ");
        // printArray(arr, lastIndex);
        if (kthLargest > lastIndex)
            return -1;
  
        return arr[lastIndex - kthLargest];
    }
  
    private static int[] makeArrayOfInteger(String[] str)
    {
        int[] arr = new int[str.length * 4];
        for (int i = 0; i < str.length; i++)
            arr[i] = Integer.parseInt(str[i]);
        return arr;
    }
  
    private static boolean searchInArray(int arr[], int len, int ele)
    {
        for (int i = 0; i < len; i++)
            if (arr[i] == ele)
                return true;
        return false;
    }
  
    private static void printArray(int arr[], int len)
    {
        for (int i = 0; i < len; i++)
            System.out.print(" " + arr[i]);
        System.out.println("");
    }
}