ही एक मनोरंजक समस्या आहे – ती सोडवणे अगदी सोपे आहे, परंतु मी पाहिले आहे की बरेच प्रोग्रामर या समस्येशी झगडत आहेत. अशा प्रकारे, थोडासा सराव – शिकणे दुखापत करणार नाही.

समस्या. जावा मध्ये अॅरे कसे फिरवायचे?

समजा तुम्हाला संपूर्ण अॅरे देण्यात आली आहे [1, 2, 3, 4, 5, 6, 7, 8] : डावीकडे 4, नंतर उजवीकडे 4 फिरवायला सांगितले. जनतेला डावीकडे आणि उजवीकडे फिरवण्यासाठी एक कार्यक्रम लिहा.

इनपुट: [1, 2, 3, 4, 5, 6, 7, 8]

बाहेर पडण्याचा पहिला मार्ग. [5, 6, 7, 8, 1, 2, 3, 4]
दुसरा मार्ग. [1, 2, 3, 4, 5, 6, 7, 8]

हे त्याच्यापेक्षा खूप वेगळे आहे वायर रोटेशन समस्या आम्ही आधी पाहिले की जिथे आम्हाला दोन ओळी फिरतात की नाही हे तपासावे लागले. येथे: दोन वस्तुमान एकमेकांशी फिरतात की नाही हे आम्ही तपासत नाही, पण आपल्याला वस्तुमान फिरवावे लागेल.

जावा – सोल्यूशनमध्ये डावी आणि उजवी अॅरे कशी फिरवायची

या समस्येचे निराकरण सोपे आहे, परंतु आपल्याला ते आवश्यक आहे वस्तुमान डावे आणि उजवे फिरवण्याचा अर्थ काय आहे?. हे करण्यासाठी, पूर्णांक अॅरे घेऊ, जसे की तीन घटक, जसे की: [10, 20, 30].

जर आपण हे डावीकडे 1 ने फिरवले, तर प्रत्येक घटक अॅरेच्या सुरवातीला (निर्देशांक शून्य) 1 स्थानावर जाईल, course या कोर्समध्ये, पहिला घटक, 10, पहिल्या निर्देशांकापासून शेवटच्या निर्देशांकाकडे जाईल . फिरणारे वस्तुमान आता असे दिसेल [20, 30, 10].

त्याचप्रमाणे, अॅरे उजवीकडे फिरवण्यासाठी, आपल्याला सर्व घटक अॅरेच्या शेवटी हलवायला हवेत, म्हणजे शेवटचा घटक पहिल्या स्थानावर संपेल.

उदाहरणार्थ, आम्ही घेतल्यास: [20, 30, 10] : हे वस्तुमान 1 आकारात उजवीकडे फिरवा [10, 20, 30], जे मूळ वस्तुमानाप्रमाणेच आहे.

बीटीडब्ल्यू, जर तुम्हाला अॅरे familiar इतर आवश्यक डेटा स्ट्रक्चर्स जसे की सूची, बायनरी ट्री, पाइल, रांग इत्यादींशी परिचित नसल्यास कृपया संपर्क साधा डेटा स्ट्रक्चर्स – अल्गोरिदम. जावा वापरून डीप डायव्ह:, आवश्यक डेटाच्या संरचनेवर प्रभुत्व मिळवण्याचा एक उत्कृष्ट अभ्यासक्रम.

कूटबद्धीकरण समाधान.

जावा मध्ये अॅरे फिरवण्यासाठी एक नमुना जावा प्रोग्राम आहे. आम्ही येथे दोन पद्धती तयार केल्या आहेत फिरवा डावे () आणि उजवीकडे फिरवा (), दोन्ही पद्धती वस्तुमान घेतात numberOfRotations: मापदंड म्हणून.

किंवा मी इनपुट अॅरेची लांबी कॅप्चर करण्यासाठी एक लांबी जोडली, परंतु अपरिहार्यपणे नाही कारण आपण ती नेहमी अॅरेमधून मिळवू शकता.

हे: फिरवा डावे () पद्धत अॅरेवर फिरते, प्रत्येक घटक डावीकडे पहिल्या निर्देशांकात हलवते.

कारण पहिला घटक गमावला जाईल, तो हलवण्यापूर्वी आम्ही तो तात्पुरत्या व्हेरिएबलमध्ये संग्रहित करतो. नंतर आम्ही तो घटक अॅरेच्या शेवटी ठेवतो. तीच प्रक्रिया आवश्यकतेनुसार अनेक वेळा पुनरावृत्ती केली जाते नंबर ऑफ रोटेशन:.

हे: उजवीकडे फिरवा () पद्धत अगदी समान आहे फिरवा डावे () पद्धत एवढाच फरक आहे की येथे घटक शेवटच्या अंकात हलवले जातात, म्हणजे उजवीकडे.

शेवटचा घटक तात्पुरत्या व्हेरिएबलमध्ये साठवला जातो, नंतर परत पहिल्या स्थितीत ठेवला जातो, जो रोटेशन पूर्ण करतो.

:

दिलेल्या क्रमांकासह अॅरे फिरवण्यासाठी जावा प्रोग्राम

डावी किंवा उजवीकडे अॅरे फिरवण्यासाठी संपूर्ण जावा प्रोग्राम येथे आहे. आपण हा कोड फक्त कॉपी-पेस्ट करू शकता-एक्लिप्समध्ये किंवा कमांड लाइनमधून चालवा. कोड पॅकेजच्या आत आहे, म्हणून जर तुम्हाला पॅकेज काढण्यात अडचण येत असेल तर तुम्ही त्यानुसार काम करा याची खात्री करा – त्याच निर्देशिकेतून चालवा.

package tool;

import java.util.Arrays;

/**
 * 
 * A simple Java Program to rotate an array by left and right by given number.
 */
public class Hello {

  public static void main(String[] args) {
    int[] input = { 1, 2, 3, 4, 5, 6, 7, 8 };
    int k = 4;

    System.out.println("Rotate given array " + Arrays.toString(input)
        + " by 4 places to the left.");

    int[] rotatedArray = rotateLeft(input, input.length, k);

    System.out.println("Rotated array: " + Arrays.toString(rotatedArray));

    System.out.println("Rotate given array " + Arrays.toString(input)
        + " by 4 places to the right.");

    rotatedArray = rotateRight(rotatedArray, rotatedArray.length, k);

    System.out.println("Rotated array: " + Arrays.toString(rotatedArray));

  }

  /**
   * Java method to rotate a given array to the left specified by numOfRotations
   * times
   * 
   * @param input
   * @param length
   * @param numOfRotations
   * @return rotated array
   */
  private static int[] rotateLeft(int[] input, int length, int numOfRotations) {
    for (int i = 0; i < numOfRotations; i++) {

      // take out the first element
      int temp = input[0];
      for (int j = 0; j < length - 1; j++) {

        // shift array elements towards left by 1 place
        input[j] = input[j + 1];
      }
      input[length - 1] = temp;
    }
    return input;

  }

  /**
   * Java method to rotate a given array to the right specified by
   * numOfRotations times
   * 
   * @param input
   * @param length
   * @param numOfRotations
   * @return rotated array
   */
  private static int[] rotateRight(int[] input, int length, int numOfRotations) {
    for (int i = 0; i < numOfRotations; i++) {

      // take out the last element
      int temp = input[length - 1];
      for (int j = length - 1; j > 0; j--) {

        // shift array elements towards right by one place
        input[j] = input[j - 1];
      }
      input[0] = temp;
    }
    return input;

  }

}

Output
Rotate given array [1, 2, 3, 4, 5, 6, 7, 8] by 4 places to the left.
Rotated array: [5, 6, 7, 8, 1, 2, 3, 4]
Rotate given array [5, 6, 7, 8, 1, 2, 3, 4] by 4 places to the right.
Rotated array: [1, 2, 3, 4, 5, 6, 7, 8]

विश्लेषण:

या समाधानाची वेळ जटिलता खालीलप्रमाणे आहे ओ (एन * के) जेथे n अॅरेमधील घटकांची संख्या आहे आणि k ही क्रांतीची संख्या आहे.

तर: k = n: मग उपाय होईल (N ^ 2). हे असे घडते कारण प्रत्येक आवर्तनात आपण वस्तुमानाचे सर्व घटक हलवतो, և आपल्याला रोटेशन k वेळा पुन्हा करावे लागते.

ही या समाधानाची वैश्विक जटिलता आहे ओ (1) कारण आम्ही कोणतेही अतिरिक्त वस्तुमान वापरले नाही. व्हेरिएबल A साठी वाटप केलेल्या क्षेत्राची गणना केली जात नाही.

जर तुम्हाला अल्गोरिदम ժամանակ वेळ և जागा अवघडपणा मोजणीबद्दल खात्री नसेल तर, मी डेटा स्ट्रक्चर և अल्गोरिदम वर चांगल्या अभ्यासक्रमात सामील होण्याचा सल्ला देतो अल्गोरिदम – सखोल डेटा संरचना, जे सखोलपणे अल्गोरिदमची जटिलता व्यापते.

एवढे जावा मध्ये डावा आणि उजवा दिलेला वस्तुमान कसा फिरवायचा हा एक साधा पण मनोरंजक वस्तुमान कोडिंग मुलाखत प्रश्न आहे जो तुम्हाला अनेकदा सॉफ्टवेअर अभियांत्रिकी मुलाखतींमध्ये सापडेल. या समस्येचे निराकरण करण्याची गुरुकिल्ली म्हणजे अॅरेचे रोटेशन म्हणजे काय, अॅरे डावी आणि उजवीकडे कशी फिरवायची हे जाणून घेणे, जे प्रारंभिक ते अंतिम स्थानापर्यंत घटकांना हलवण्याशिवाय काहीच नाही.

इतर: रे ված डेटा स्ट्रक्चर कोडिंग समस्या तुम्हाला आवडेल

  • अॅरेमध्ये विशिष्ट मूल्य आहे का ते कसे तपासायचे? (उपाय)
  • मुलाखतींमधून 20+ अॅरे-आधारित कोडिंग समस्या (प्रश्न)
  • जावामधील अॅरेमधून एखादी वस्तू कशी हटवायची? (उपाय)
  • शीर्ष 5 एन्कोडिंग मुलाखत तयारी वेबसाइट (साइट्स:)
  • ऑर्डर केलेल्या अॅरेमध्ये एक गहाळ क्रमांक कसा शोधायचा? (उपाय)
  • 50+ डेटा स्ट्रक्चर Int मुलाखतींमधील अल्गोरिदम प्रश्न (प्रश्न)
  • वर्गीकरण न करता अॅरेमध्ये सर्वात मोठा և सर्वात लहान क्रमांक कसा शोधायचा? (उपाय)
  • वस्तुमानाच्या सर्व जोड्या कशा शोधायच्या ज्याची बेरीज k (उपाय)
  • शीर्ष 20 मुलाखत लाइन कोडिंग समस्या (प्रश्न)
  • मुलाखत अल्गोरिदम जाणून घेण्यासाठी डेटा स्ट्रक्चरवरील 10 अभ्यासक्रम (अभ्यासक्रम)
  • जावा मध्ये न लावलेल्या अॅरेचे डुप्लिकेट कसे शोधायचे? (उपाय)
  • डेटा रचना 7 अल्गोरिदम शिकण्यासाठी शीर्ष 7 अभ्यासक्रम? (अभ्यासक्रम)
  • जावा मधील अॅरेमधून डुप्लिकेट कसे काढायचे? (उपाय)
  • जावा मध्ये अॅरेची व्यवस्था कशी करावी? (उपाय)
  • कोणतीही एन्क्रिप्शन मुलाखत मोडण्यासाठी 75 मिंग प्रोग्रामिंग प्रश्न (सूची)
  • पुनरावृत्तीशिवाय बायनरी शोध अल्गोरिदम (अल्गोरिदम:)
  • प्राइम नंबर तयार करण्यासाठी अल्गोरिदम – एरेटोस्थेनेस स्क्रू (अल्गोरिदम:)

हा लेख आतापर्यंत वाचल्याबद्दल धन्यवाद. जर तुम्हाला मास-आधारित कोडिंग मुलाखत և माझे समाधान आणि स्पष्टीकरण आवडत असेल तर ते तुमच्या मित्र-सहकाऱ्यांसह शेअर करा. आपल्याकडे काही प्रश्न किंवा टिप्पण्या असल्यास, कृपया एक टीप सोडा.

पुनश्च: आपण काही विनामूल्य संसाधने शोधत असल्यास, आपण ही सूची देखील तपासू शकता डेटा स्ट्रक्चर आणि अल्गोरिदम वर मोफत अभ्यासक्रम प्रोग्रामरसाठी. कोपऱ्यात सुरुवातीपासून आणि मध्यवर्ती प्रोग्रामरसाठी सुरुवातीपासून अल्गोरिदम शिकण्यासाठी अनेक उपयुक्त ऑनलाइन अभ्यासक्रम आहेत.