JavaRush /Blog Jawa /Random-JV /Ngopi #110. Kita ngatasi masalah carane nemokake nomer te...

Ngopi #110. Kita ngatasi masalah carane nemokake nomer telu paling gedhe ing array. Mbalikake senar ing Jawa

Diterbitake ing grup

Carane nemokake nomer telu paling gedhe ing array

Source: Dev.to Kita duwe masalah kanggo ngatasi: Sampeyan diwenehi Uploaded unsorted integer. Kepiye carane nemokake nomer paling gedhe nomer telu ing larik? Cathetan: Array kasebut ngemot nilai duplikat lan nilai negatif, lan uga kode iki kudu bisa digunakake yen dawa array mundhak kaping N. Ngopi #110.  Kita ngatasi masalah carane nemokake nomer telu paling gedhe ing array.  Mbalikake senar ing Jawa - 1Solusi kasebut diwenehi ing Jawa:

Conto 1: Unsorted array karo nilai negatif

Input: [87, 99, -14, 05, 46, 54] Kode:
public class ThirdLargestNumInArray {

    public static void main(String[] args) {

        /*
         * unsorted Array with duplicate and negative values
         */
        Integer arr[] = { 87, 99, -14, 05, 46, 54 };

        /* Variable initialization */
        int largest = 0, secondLargest = 0, thirdLargest = 0;

        /* Condition to find */
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > largest) {
                /*
                 * if condition is true assign large value to second large value
                 */
                secondLargest = largest;

                /* assign new large value */
                largest = arr[i];

            } else if (arr[i] > secondLargest) {
                /*
                 * if condition is true assign second large value to third large value
                 */
                thirdLargest = secondLargest;

                /* assign new second large value */
                secondLargest = arr[i];

            } else if (arr[i] > thirdLargest) {
                /*
                 * if condition is true the third largest value will be assigned
                 */
                thirdLargest = arr[i];
            }
        }

        /* Print the values */
        System.out.println("Largest = " + largest);
        System.out.println("Second Largest = " + secondLargest);
        System.out.println("Third Largest = " + thirdLargest);

    }
}
Kesimpulan:
Paling gedhé = 99 Paling gedhé kaloro = 87 Paling gedhé katelu = 54
Katerangan:
  1. Kaya kasebut ing ndhuwur, array diinisialisasi kanthi nilai positif lan negatif.

  2. Kita miwiti variabel kanggo nyimpen nilai paling gedhe, nomer loro, lan nomer telu. Cathetan: Variabel diinisialisasi dadi 0 kanggo siji kasus khusus: yen unsur maksimum katelu ora ana ing larik, bakal ngasilake 0.

  3. Kita mbaleni loop N (dawa array) kaping pirang-pirang kanggo nemokake telung nilai paling gedhe.

  4. Yen kondisi kanggo nemtokake nilai paling gedhe kanggo nilai gedhe kaloro lan initialize Nilai gedhe anyar ing Uploaded.

    Kondisi 1st elseif kanggo nemtokake nilai amba kaloro kanggo Nilai amba katelu lan initialize Nilai amba kapindho anyar ing Uploaded.

    Kawontenan elseif 2nd kanggo nemtokake nilai gedhe katelu ing Uploaded.

  5. Pungkasan, kita nyithak variabel.

Conto 2: Unsorted array kanthi nilai negatif lan duplikat

Input: [77, 101, 95, 14, 05, 46, -47, 94, 00, 95, 52, 86, 36, -54, 94, 89] Kode:
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class ThirdLargestNumInSet {

    public static void main(String[] args) {

        /*
         * unsorted Array with duplicate and negative values
         */
        Integer arr[] = { 77, 101, 14, 05, 46, -47, 94, 00, 95, 52, 86, 36, -54, 94, 89 };

        /* Variable initialization */
        int largest = 0, secondLargest = 0, thirdLargest = 0;

        /*
         * using LinkedHashSet - Map to remove duplication in Array
         */
        Set<Integer> newSet = new LinkedHashSet<>();

        for (int i = 0; i < arr.length; i++) {
            newSet.add(arr[i]);
        }

        /* Condition to find */
        for (Integer i : newSet) {
            if (i > largest) {
                /*
                 * if condition is true assign large value to second large value
                 */
                secondLargest = largest;

                /* assign new large value */
                largest = i;

            } else if (i > secondLargest) {
                /*
                 * if condition is true assign second large value to third large value
                 */
                thirdLargest = secondLargest;

                /* assign new second large value */
                secondLargest = i;

            } else if (i > thirdLargest) {
                /*
                 * if condition is true the third largest value will be assigned
                 */
                thirdLargest = i;
            }
        }

        /* Print the values */
        System.out.print("Largest = " + largest);
        System.out.print("\nSecond Largest = " + secondLargest);
        System.out.print("\nThird Largest = " + thirdLargest);
    }
}
Kesimpulan:
Paling gedhé = 101 Paling gedhé kaloro = 95 Paling gedhé katelu = 94
Panjelasan: Kode pseudo sing digunakake ing loro kode iku padha, mung prabédan ing conto 2 yaiku kita nggunakake LinkedHashSet. Iki minangka koleksi Jawa ing ngendi kita nyimpen obyek unik sing nyebabake ngilangi nilai duplikat ing array.

Solusi liyane:

Kita bisa nggunakake algoritma ngurutake gelembung (ngurutake saka paling murah nganti paling dhuwur) kanggo ngurutake array lan nemokake nilai paling gedhe saka array. Input: [87, 99, 14, 05, 46, 54] Kode:
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class Main {

    public static void bubblesort(Integer[] arr) {

        int n = arr.length;
        int temp;

        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }

            }
        }

    }

    public static void main(String[] args) {

        Integer[] arr = { 87, 99, 14, 05, 46, 54 };

        bubblesort(arr);

        System.out.print("array after sorting : ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

        int n = arr.length;

        int max = arr[n - 3];
        System.out.println("\n3rd largest value: " + max);
    }

}
Kesimpulan:
larik sawise ngurutake: 5 14 46 54 87 99 Nilai paling gedhe kaping 3: 54

Mbalikake senar ing Jawa

Sumber: Dev.to

Program Java kanggo mbalikke string nggunakake StringBuilder

Panjelasan: String minangka obyek ing Jawa sing didhukung sacara internal dening sawetara karakter. String ora bisa diganti amarga array ora bisa diganti (ditutup kanggo modifikasi). Saben sampeyan nggawe owahan ing baris, baris anyar digawe. Ing kasus kita nggunakake StringBuilder sing bisa diowahi. Cathetan: Kita uga bisa nggunakake kelas StringBuffer . Kode:
public class ReverseStringBuilder {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Create StringBuilder(mutable) object */
        StringBuilder s1 = new StringBuilder();

        /* Using append() and reverse() in StringBuilder */
        s1.append(name);
        s1 = s1.reverse();

        /* Print the reverse */
        System.out.println(s1);

    }

}
Kesimpulan:
emordnilaP
Urutan:
  1. Nggawe obyek saka kelas String lan miwiti.

  2. Nggawe obyek saka kelas string builder .

  3. Gunakake built-in string builder append () lan mbalikke () fungsi .

  4. Nyetak obyek pembangun string .

Program Java kanggo mbalikke string tanpa nggunakake fungsi built-in String mbalikke ()

Cara 1

Panjelasan: Fungsi toCharArray () digunakake kanggo ngowahi string iki dadi array karakter. Sawise iki, kita bakal nggunakake daur ulang kanggo ngliwati saben karakter kanthi urutan mbalikke lan entuk output kanggo saben karakter. Kode:
public class Reverse {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Using toCharArray() function */
        char[] ch = name.toCharArray();

        /* Temp string */
        String rev = "";

        /* Iterating for loop in reverse to store */
        for (int i = ch.length - 1; i >= 0; i--) {
            /* Concatenating Strings */
            rev += ch[i];
        }

        /* Print the reverse */
        System.out.println(rev);

    }

}
Kesimpulan:
emordnilaP
Urutan:
  1. Nggawe obyek saka kelas String lan miwiti.

  2. Nggawe array karakter lan nelpon fungsi toCharArray () karo obyek String .

  3. Nggawe obyek String kanggo variabel sementara.

  4. Baleni kanggo daur ulang ing mbalikke kanggo njaluk saben karakter ing urutan mbalikke.

  5. Gabungke saben karakter dadi variabel Temp .

  6. Tipe Temp .

Metode 2

Panjelasan: Nggunakake for loop , kita nyithak senar kanthi urutan mbalikke. Ing sisih liya, metode charAt(indeks) ngasilake karakter ing indeks apa wae. Karakter kasebut bakal digabung sawise saben pengulangan kanggo ngganti variabel senar. Kode:
public class ReverseCharAt {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Temp string */
        String rev = "";

        /* Iterating for loop in reverse to store */
        for (int i = name.length() - 1; i >= 0; i--) {
            /* Concatenating Strings */
            rev = rev + name.charAt(i);
        }

        /* Print the reverse */
        System.out.println(rev);

    }

}
Kesimpulan:
emordnilaP
Urutan:
  1. Nggawe obyek saka kelas String lan miwiti.

  2. Nggawe obyek String kanggo variabel sementara.

  3. Baleni kanggo loop ing urutan mbalikke kanggo njaluk saben karakter ing urutan mbalikke.

  4. Gabungke saben karakter menyang variabel Temp kanthi nelpon fungsi charAt () .

  5. We print Temp .

Cathetan Khusus: Sampeyan bisa uga kenal karo fungsi mbalikke, nanging tujuane ing kene yaiku njelajah kemampuan StringBuilder lan carane sampeyan bisa ngoptimalake kode tanpa fungsi mbalikke. Mugi iki mbantu wong ing mangsa!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION