배열에서 세 번째로 큰 숫자를 찾는 방법
출처: Dev.to 해결해야 할 문제가 있습니다. 정렬되지 않은 정수 배열이 제공됩니다. 배열에서 세 번째로 큰 숫자를 찾는 방법은 무엇입니까? 참고: 배열에는 중복 값과 음수 값이 모두 포함되어 있으며 배열 길이가 N배 증가하는 경우에도 이 코드가 작동합니다. 해결책은 Java로 제공됩니다.예 1: 음수 값이 있는 정렬되지 않은 배열
입력: [87, 99, -14, 05, 46, 54] 코드: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);
}
}
결론:
-
위에서 언급한 것처럼 배열은 양수 값과 음수 값 모두로 초기화됩니다.
-
가장 큰 값, 두 번째로 큰 값, 세 번째로 큰 값을 각각 저장하도록 변수를 초기화합니다. 참고: 변수는 특별한 경우에 0으로 초기화됩니다. 세 번째 최대 요소가 배열에 없으면 0을 반환합니다.
-
세 개의 가장 큰 값을 찾기 위해 루프 N(배열의 길이)을 여러 번 반복합니다.
-
조건이 두 번째 큰 값에 가장 큰 값을 할당하고 배열에서 새로운 큰 값을 초기화하는 것인 경우.
첫 번째 elseif 조건 은 두 번째 큰 값을 세 번째 큰 값에 할당하고 배열에서 새로운 두 번째 큰 값을 초기화하는 것입니다.
두 번째 elseif 조건은 배열의 세 번째 큰 값을 할당하는 것입니다.
-
마지막으로 변수를 인쇄합니다.
예 2: 음수 및 중복 값이 있는 정렬되지 않은 배열
입력: [77, 101, 95, 14, 05, 46, -47, 94, 00, 95, 52, 86, 36, -54, 94, 89] 코드: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);
}
}
결론:
또 다른 해결책:
버블 정렬 알고리즘(가장 낮은 순서에서 가장 높은 순서로 정렬)을 사용하여 배열을 정렬하고 배열의 가장 큰 값을 찾을 수 있습니다. 입력: [87, 99, 14, 05, 46, 54] 코드: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);
}
}
결론:
Java에서 문자열 뒤집기
출처 : Dev.toStringBuilder를 사용하여 문자열을 뒤집는 Java 프로그램
설명: 문자열은 문자 배열에 의해 내부적으로 지원되는 Java의 개체입니다. 배열은 변경할 수 없기 때문에 문자열은 변경할 수 없습니다(수정이 불가능함). 행을 변경할 때마다 새 행이 생성됩니다. 우리의 경우에는 변경 가능한 StringBuilder를 사용하고 있습니다 . 참고: StringBuffer 클래스를 사용할 수도 있습니다 . 암호: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);
}
}
결론:
-
String 클래스 의 객체를 생성 하고 초기화합니다.
-
문자열 빌더 클래스 의 객체를 만듭니다 .
-
내장 문자열 작성기 인 add() 및 reverse() 함수를 사용하십시오 .
-
문자열 작성기 개체를 인쇄합니다 .
내장 함수 String reverse()를 사용하지 않고 문자열을 뒤집는 Java 프로그램
방법 1
설명: toCharArray() 함수는 이 문자열을 문자 배열로 변환하는 데 사용됩니다. 그런 다음 for 루프를 사용하여 각 문자를 역순으로 살펴보고 각 문자에 대한 출력을 얻습니다. 암호: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);
}
}
결론:
-
String 클래스 의 객체를 생성 하고 초기화합니다.
-
문자 배열을 만들고 String 객체를 사용 하여 toCharArray() 함수를 호출합니다 .
-
임시 변수에 대한 String 개체를 만듭니다 .
-
for 루프를 역방향으로 반복하여 각 문자를 역순으로 가져옵니다.
-
각 문자를 Temp 변수로 연결합니다 .
-
온도를 입력합니다 .
방법 2
설명: for 루프를 사용하여 문자열을 역순으로 인쇄했습니다. 반면에 charAt(index) 메서드는 주어진 인덱스에 있는 문자를 반환합니다. 문자열 변수를 변경하기 위해 각 반복 후에 문자가 연결됩니다. 암호: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);
}
}
결론:
-
String 클래스 의 객체를 생성 하고 초기화합니다.
-
임시 변수에 대한 String 개체를 만듭니다 .
-
for 루프를 역순으로 반복하여 각 문자를 역순으로 가져옵니다.
-
charAt() 함수를 호출하여 각 문자를 Temp 변수로 연결합니다 .
-
Temp 를 인쇄합니다 .
GO TO FULL VERSION