Java에서는 주어진 쿼리를 기반으로 배열을 하위 배열로 분할한 후 하위 배열의 최대 하위 배열 합계를 찾습니다.
두 개의 정수 배열이 있습니다. 하나는 계산된 요소가 있고 다른 하나는 하위 집합을 생성하기 위해 배열을 분할하는 데 필요한 분할 점이 있습니다. 각 분할에서 각 하위 집합의 합을 계산하고 최대 하위 집합을 반환해야 합니다.
예를 들어 이해해 봅시다:-
Input− int arr[] = int arr[] = { 9, 4, 5, 6 , 7 } int SplitPoints[] = { 0, 2, 3, 1 } ;
Output− 각 분할 후 최대 하위 배열 합계 [22, 13, 9, 9] 하위 집합 합계
첫 번째 분할 후 → {9} 및 {4,5,6,7} >> 최대 하위 배열 합은 - 22
두 번째 분할 후 strong> → {9}, { 4,5 } 및 {6,7} >> 최대 하위 배열 합은 - 13
세 번째 분할 후 →{ 9}, {4,5}, {6} 및 {7} >> 최대 하위 배열 배열 합계는 - 9
4번째 분할 후 →{9}, {4}, {5}, {6 } 및 {7} >> 최대 하위 배열 합계는 9
Input−int arr[] = int arr[] = { 7, 8, 5, 9, 1 } int SplitPoints[] = { 1, 2 , 0, 3 };
Output−각 분할 후 최대 하위 배열 합계 [15, 115, 10, 9]
Explanation−여기서 분할 지점에 따라 배열을 분해하고 최대 하위 집합 합계를 얻습니다. 각 분할 후
첫 번째 분할 후 → {7, 8} 및 {5,9,1} >> 최대 하위 배열 합계는 15
두 번째 분할 후 → {7,8}, {5} 및 {9,1} >> 최대 하위 배열 합은 15 115
세 번째 나누기 이후 →{7}, {8}, {5} 및 {9,1} >> 최대 하위 배열 합은 10
네 번째 나누기 이후 →{7}, {8}, {5}, {9} 및 {1} >> 최대 하위 배열 합은 9
에서 사용되는 방법 다음 프로그램은 다음과 같습니다.
main() 메서드
-
arr[] 및 SplitPoints[]와 같이 주어진 길이의 입력 배열부터 시작합니다. 해당 길이는 계산되어calculateSubsetSum(arr.length,splitPoints.length,splitPoints,arr) 형식으로 메서드에 전달됩니다.
- calculateSubsetSum()
-
메소드에서 정수 배열을 sum[]으로 만들고 sum[0]을 arr[0]으로 설정합니다.
배열의 길이까지 i에서 1까지 FOR 반복을 시작하고 sum[i]를 sum[i - 1] + arr[i]로 설정하고 temp[0]을 new subSets(0, n - 1, 합계[n - 1]).
계속해서 t2.add(temp[0]) 및 t1.add(0)
splitPoints 배열 길이까지 i에서 0까지 FOR 루프를 계속 추가하세요. 루프 내에서 currentSplitPoint를 t1.floor(splitPoints[i])로 설정하고 t2에서 t2.remove(temp[currentSplitPoint])
end를 temp[currentSplitPoint] .last로 설정하고 temp[currentSplitPoint]를 새 하위 집합으로 설정합니다. (currentSplitPoint, SplitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]))
t2.add(temp[currentSplitPoint]) 및 temp[splitPoints 사용 [i] + 1] = 새로운 하위 집합(splitPoints[i] + 1, end, sum[end] - sum[splitPoints[i] add]])
use t2.add(temp[splitPoints [i] + 1]), t1.add(currentSplitPoint) 및 t1.add(splitPoints[i] + 추가 1)
t2.first() 값을 인쇄합니다.
- subSets 클래스를 만들고 first, last 및 value를 데이터 멤버로 선언하고 기본 생성자를 subSets(int f, int l, int v)로 정의하고 first를 f로 설정하고 last를 l 및 value로 설정 to v
Comparator
-
를 구현할 유틸리티Comparator로 클래스를 만들고 s2.value가 s1.value와 같지 않은지 확인한 다음 s2 값을 반환합니다. s1.first가 s2.first와 같지 않은지 확인하고 s2.first를 반환합니다. - s1.first
p>
Example
import java.io.IOException; import java.io.InputStream; import java.util.*; class utilityComparator implements Comparator<subSets>{ public int compare(subSets s1, subSets s2){ if(s2.value != s1.value){ return s2.value - s1.value; } if(s1.first != s2.first){ return s2.first - s1.first; } return 0; } } class subSets{ int first; int last; int value; subSets(int f, int l, int v){ first = f; last = l; value = v; } } public class testClass{ static void calculateSubsetSum(int n, int k, int splitPoints[], int arr[]){ int sum[] = new int[n]; sum[0] = arr[0]; for (int i = 1; i < n; i++){ sum[i] = sum[i - 1] + arr[i]; } TreeSet<Integer> t1 = new TreeSet<>(); TreeSet<subSets> t2 = new TreeSet<>(new utilityComparator()); subSets temp[] = new subSets[n]; temp[0] = new subSets(0, n - 1, sum[n - 1]); t2.add(temp[0]); t1.add(0); System.out.println("Maximum subarray sum after each split"); for (int i = 0; i < k; i++){ int currentSplitPoint = t1.floor(splitPoints[i]); t2.remove(temp[currentSplitPoint]); int end = temp[currentSplitPoint].last; temp[currentSplitPoint] = new subSets(currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1])); t2.add(temp[currentSplitPoint]); temp[splitPoints[i] + 1] = new subSets(splitPoints[i] + 1, end, sum[end] - sum[splitPoints[i]]); t2.add(temp[splitPoints[i] + 1]); t1.add(currentSplitPoint); t1.add(splitPoints[i] + 1); System.out.println(t2.first().value); } } public static void main(String[] args){ int arr[] = { 2, 1, 6, 8, 5, 10, 21, 13}; int splitPoints[] = { 3, 1, 2, 0, 4, 5 }; calculateSubsetSum(arr.length, splitPoints.length, splitPoints, arr); } }
로그인 후 복사Output
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
르레위 내용은 Java에서는 주어진 쿼리를 기반으로 배열을 하위 배열로 분할한 후 하위 배열의 최대 하위 배열 합계를 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











두 개의 정수 배열이 있습니다. 하나는 계산된 요소가 있고 다른 하나는 배열을 분할하여 하위 집합을 생성하는 데 필요한 분할 점이 있습니다. 각 분할에서 각 하위 집합의 합을 계산하고 최대 하위 집합을 반환해야 합니다. 예제를 살펴보겠습니다. 이해: - 입력 −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} 출력−각 분할 후 최대 하위 배열 합계 [ 22, 13,9,9] 설명 − 여기서는 분할 지점에 따라 배열을 분해하고 각 분할 후와 첫 번째 분할 후 최대 부분 집합을 얻습니다. → {9} 및 {4,5,6,7 }>>최대 합계 하위 배열의 수는 두 번째 분할 후 -22입니다.→{9},{4

이번 글에서는 C++를 이용하여 최대값과 최소값이 같은 부분배열의 개수를 찾는 문제를 해결해보겠습니다. 다음은 문제의 예입니다. −Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}및{4,4,4}는 동일한 최대 및 최소 요소로 구성할 수 있는 하위 배열입니다.입력:배열={3, 3, 1,5,

이번 포스팅에서는 C++를 사용하여 합이 K보다 작은 하위 배열의 수를 구해보겠습니다. 이 문제에는 배열 arr[]과 정수 K가 있습니다. 이제 합이 K보다 작은 하위 배열을 찾아야 합니다. 다음은 해결책을 찾기 위한 −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}and{2,3}의 예입니다. 이제 우리는 주어진 문제를 해결하기 위해 두 가지 다른 접근 방식이 사용됩니다. 무차별 대입 이 접근 방식에서는 모든 하위 배열을 반복하고 그 합계를 계산하며, 합계가 k보다 작으면 k와 비교하여 답을 늘립니다. 예#포함<

정수 값을 포함하는 Arr[] 배열을 얻습니다. 목표는 XOR이 0인 하위 배열의 최대 개수를 찾는 것입니다. 모든 하위 배열의 비트는 원하는 만큼 교환될 수 있습니다. 참고: -1

하위 배열은 배열의 연속된 부분입니다. 예를 들어 배열 [5,6,7,8]을 고려하면 (5), (6), (7), (8), (5,6)과 같이 비어 있지 않은 하위 배열이 10개 있습니다. (6, 7), (7,8), (5,6,7), (6,7,8) 및 (5,6,7,8). 이 가이드에서는 합계가 홀수인 하위 배열의 수를 찾기 위해 C++에서 가능한 모든 정보를 설명합니다. 홀수 합계의 하위 배열 수를 찾으려면 다양한 방법을 사용할 수 있으므로 다음은 간단한 예입니다. Input:array={9,8,7,6,5}Output:9Explanation:Sumofsubarray-{9}= 9{7

배열은 인접한 메모리 위치에 연속적으로 저장된 유사한 데이터의 모음입니다. 오프셋 값을 데이터베이스의 특정 기본 값으로 정의하면 각 요소의 특정 위치를 더 쉽게 평가할 수 있습니다. 특정 인덱스의 기본 값은 0이고 오프셋 값은 두 특정 인덱스 간의 차이입니다. 하위 배열은 특정 배열의 일부이며 여러 값으로 레이블이 지정된 변수 집합으로 정의될 수 있습니다. 가장 긴 하위 배열은 배열의 모든 요소가 K보다 큰 배열을 나타냅니다. 여기서 최대 합 하위 배열의 합은 주어진 데이터 세트에서 주어진 데이터 세트보다 작거나 같습니다. 데이터 세트에서 1보다 작게 주어진 가장 긴 하위 배열의 길이를 찾으려면 특정 하위 배열에서 1의 총 개수를 찾으면 됩니다. 참고: 개수는 0 개수보다 커야 합니다. 최대공약수는 내가 설명하는 수학적 현상이다.

PHP 배열은 매우 일반적으로 사용되는 데이터 구조이며 배열의 병합 및 분할 작업이 개발에 자주 포함됩니다. 이 기사에서는 PHP 언어를 사용하여 이 두 가지 작업을 구현하는 방법을 소개하고 해당 코드 예제를 첨부합니다. 1. 배열 병합 배열 병합 작업은 array_merge() 함수를 사용하여 구현할 수 있습니다. 이 함수는 여러 배열을 인수로 받아들이고 이를 새 배열로 병합합니다. 코드 예: $array1=["apple","ba

이번 글에서는 하위 배열에서 소수의 개수를 구하는 방법을 설명하겠습니다. 우리는 범위 {l,R}을 나타내는 두 개의 정수를 포함하는 양수 배열 arr[] 및 q 쿼리를 가지고 있으며 주어진 범위에서 소수의 수를 찾아야 합니다. 다음은 주어진 문제에 대한 예입니다. 입력:arr[]={1,2,3,4,5,6},q=1,L=0,R=3Output:2Inthegivenrangetheprimesare{2,3}.입력: arr []={2,3,5,8,12,11},q=1,L=0,R=5출력:4주어진 범위에서 소수는{2,3,5
