問題#19:ITトレーニング-主要企業の現在の問題と課題

Amazonのタスクを使用して、ITトレーニングの新しい問題を準備しました。



KDPV



以下は、Amazonの開発エンジニアの地位に対する応募者への質問とタスクです。複雑さは伝統的に低いものから高いものまでさまざまです。 そして、いくつかの質問は最も探究心によって解決することができます:)私たちは、このレベルの会社でのインタビューの準備をしている人にそれらを解決し、自分の能力をテストすることを提供します。



ご質問



  1. 不足しているintを見つける

    1〜50の整数(両方を含む)を含むExcelシートが提供されます。 ただし、数値はごちゃ混ぜの形式であり、1つの整数が欠落しています。 不足している整数を特定する必要があります。 ロジックのみが必要です。


    翻訳
    1から50までの数字を含むExcelスプレッドシートがあるとします。 番号は順序付けられておらず、1つの番号が欠落しています。 この番号を見つける必要があります。 問題を解決するにはロジックで十分です。



  2. ロボットとパラシュート

    2つのロボットがパラシュートで無限の1次元の数直線上に着陸します。 彼らは着陸して移動を開始するとすぐに両方のパラシュートを解放します。 以下の機能のみを使用できます。



    I. moveLeft()//ロボットは1単位時間で左に1単位移動する



    II。 moveRight()//ロボットは1単位時間で1単位だけ右に移動します



    III。 noOperation()//ロボットは移動せず、1単位時間かかります



    IV。 onTopOfParachute()//ロボットがいずれかのパラシュートの上に立っている場合はtrue、そうでない場合はfalseを返します



    V. didWeMeet()//ロボットが他のロボットと出会う場合はtrueを返し、そうでない場合はfalse



    ロボットが互いに出会うように関数を書きます。 ロボットは、この関数の同じコピーを実行します。 擬似コードは受け入れられます。


    翻訳
    パラシュートを備えた2台のロボットが無限の平らなリボンに着陸します。 どちらもパラシュートを外し、動き始めます。 ロボットは次の指示に従うことができます。



    I. moveLeft()//ロボットは1単位時間で1単位左に移動します。



    II。 moveRight()//ロボットは1単位の時間、1単位だけ右に移動します



    III。 noOperation()//ロボットは1単位の時間待機します



    IV。 onTopOfParachute()//ロボットがパラシュートしている場合はtrueを返し、そうでない場合はfalseを返します



    V. didWeMeet()//ロボットが別のロボットに出会った場合はtrue、そうでない場合はfalseを返します。



    会議ロボット用の関数を作成します。 ロボットは、この機能の同一のコピーを実行します。 擬似コードは受け入れ可能です。



タスク



  1. ランレングスエンコーディング

    入力文字列を指定して、入力文字列のRun Length Encoded文字列を返す関数を作成します。



    たとえば、入力文字列が「wwwwaaadexxxxxx」の場合、関数は「w4a3d1e1x6」を返す必要があります。

    翻訳
    入力文字列を指定して、一連の入力文字列の長さのエンコーディングを返す関数を作成します。



    たとえば、入力文字列「wwwwaaadexxxxxx」は「w4a3d1e1x6」に変換する必要があります。



  2. 学生とチョコレート

    チョコレートを一列に並べたn個の箱があるとします。 k人の生徒がいます。 問題は、与えられたロットから連続した一連の箱を選択することにより、最大数のチョコレートをk人の生徒に均等に分配することです。 ボックスが1からnまでの数字で左から右に並んでいると考えてください。 k個の生徒全員に均等に最大数のチョコレートを提供できる連続したボックスのグループを選択する必要があります。 ボックスの行配列を表す配列arr []が与えられ、arr [i]は位置 'i'のボックス内のチョコレートの数を表します。



    例:



    入力:arr [] = {2、7、6、1、4、5}、k = 3

    出力:6

    部分配列は{7、6、1、4}で、合計は18です。

    18個のチョコレートを均等に分配

    3人の生徒は6です。

    選択したボックスは連続した順序になっていることに注意してください

    インデックス付き{1、2、3、4}。

    翻訳
    n箱のチョコレートが連続して積み上げられているとします。 また、k人の学生が出席しています。 タスクは、チョコレートの最大可能量を生徒間で均等に分割し、連続したボックスのサブシーケンスを選択することです。 ボックスには、左から右に1〜nの番号が付けられているとします。 私たちは、生徒間で均等に分割された最大量のチョコレートを含む、隣り合った箱のグループを順番に選択する必要があります。 arr []配列は行のボックスを表し、arr [i]値は「i」ボックス内のチョコレートの量を表します。



    例:



    入力:arr [] = {2、7、6、1、4、5}、k = 3

    出口:6(1人の生徒に渡されるチョコレートの量)

    サブアレイ{7、6、1、4}、合計18。チョコレートを18生徒に分配すると、1人に6ショックが与えられます。 選択されたボックスインデックスは{1、2、3、4}です。



  3. すべてのアナグラムを一緒に印刷する

    単語の配列を指定すると、すべてのアナグラムを一緒に印刷します。 たとえば、指定された配列が{“ cat”、“ dog”、“ tac”、“ god”、“ act”}の場合、出力は“ cat tac act dog god”になります。

    翻訳
    単語の配列を指定すると、すべてのアナグラムを一緒に印刷します。 たとえば、配列{"cat"、 "dog"、 "tac"、 "god"、 "act"}では、出力は "cat tac act dog god"になります。





回答は来週以内に行われます-決定する時間があります。 頑張って



解決策



  1. 質問1
    正解は、最初のコメントに記載されています。 また、特定の条件下での解決策がここで提案されます。



  2. 質問2
    このコメントでは、正しい解決策がRsa97によって提案されました。



  3. タスク1
    いくつかの正しいオプションが提案されています。 ソース:

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define MAX_RLEN 50 /* Returns the Run Length Encoded string for the source string src */ char *encode(char *src) { int rLen; char count[MAX_RLEN]; int len = strlen(src); /* If all characters in the source string are different, then size of destination string would be twice of input string. For example if the src is "abcd", then dest would be "a1b1c1d1" For other inputs, size would be less than twice. */ char *dest = (char *)malloc(sizeof(char)*(len*2 + 1)); int i, j = 0, k; /* traverse the input string one by one */ for(i = 0; i < len; i++) { /* Copy the first occurrence of the new character */ dest[j++] = src[i]; /* Count the number of occurrences of the new character */ rLen = 1; while(i + 1 < len && src[i] == src[i+1]) { rLen++; i++; } /* Store rLen in a character array count[] */ sprintf(count, "%d", rLen); /* Copy the count[] to destination */ for(k = 0; *(count+k); k++, j++) { dest[j] = count[k]; } } /*terminate the destination string */ dest[j] = '\0'; return dest; } /*driver program to test above function */ int main() { char str[] = "geeksforgeeks"; char *res = encode(str); printf("%s", res); getchar(); }
          
          







  4. タスク2
    元のソリューション:

     // Java implementation to find the maximum number // of chocolates to be distributed equally among // k students import java.io.*; import java.util.*; class GFG { // Function to find the maximum number of chocolates // to be distributed equally among k students static int maxNumOfChocolates(int arr[], int n, int k) { // Hash table HashMap <Integer,Integer> um = new HashMap<Integer,Integer>(); // 'sum[]' to store cumulative sum, where // sum[i] = sum(arr[0]+..arr[i]) int[] sum=new int[n]; int curr_rem; // To store sum of sub-array having maximum sum int maxSum = 0; // Building up 'sum[]' sum[0] = arr[0]; for (int i = 1; i < n; i++) sum[i] = sum[i - 1] + arr[i]; // Traversing 'sum[]' for (int i = 0; i < n; i++) { // Finding current remainder curr_rem = sum[i] % k; // If true then sum(0..i) is divisible // by k if (curr_rem == 0) { // update 'maxSum' if (maxSum < sum[i]) maxSum = sum[i]; } // If value 'curr_rem' not present in 'um' // then store it in 'um' with index of its // first occurrence else if (!um.containsKey(curr_rem) ) um.put(curr_rem , i); else // If true, then update 'max' if (maxSum < (sum[i] - sum[um.get(curr_rem)])) maxSum = sum[i] - sum[um.get(curr_rem)]; } // Required maximum number of chocolates to be // distributed equally among 'k' students return (maxSum / k); } // Driver Code public static void main(String[] args) { int arr[] = { 2, 7, 6, 1, 4, 5 }; int n = arr.length; int k = 3; System.out.println("Maximum number of chocolates: " + maxNumOfChocolates(arr, n, k)); } }
          
          







  5. タスク3
    Pythonのソリューションオプション:

     # structure for each word of duplicate array class Word(object): def __init__(self, string, index): self.string = string self.index = index # Create a DupArray object that contains an array # of Words def createDupArray(string, size): dupArray = [] # One by one copy words from the given wordArray # to dupArray for i in xrange(size): dupArray.append(Word(string[i], i)) return dupArray # Given a list of words in wordArr[] def printAnagramsTogether(wordArr, size): # Step 1: Create a copy of all words present in # given wordArr. # The copy will also have orignal indexes of words dupArray = createDupArray(wordArr, size) # Step 2: Iterate through all words in dupArray and sort # individual words. for i in xrange(size): dupArray[i].string = ''.join(sorted(dupArray[i].string)) # Step 3: Now sort the array of words in dupArray dupArray = sorted(dupArray, key=lambda k: k.string) # Step 4: Now all words in dupArray are together, but # these words are changed. Use the index member of word # struct to get the corresponding original word for word in dupArray: print wordArr[word.index], # Driver program wordArr = ["cat", "dog", "tac", "god", "act"] size = len(wordArr) printAnagramsTogether(wordArr, size)
          
          










All Articles