-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathkadanesalgoinjava00912237.java
133 lines (107 loc) · 3.47 KB
/
kadanesalgoinjava00912237.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import java.util.*;
public class array{
public static void printarray(int arr[]){
for(int i = 0 ; i<arr.length; i++){
System.out.print(arr[i]+" ");
}
}
public static void rev(int arr[]){
int a=0;
int b=arr.length-1;
while(a<b){
int temp = arr[b];
arr[b]=arr[a];
arr[a]=temp;
a++;
b--;
}
}
public static void pairs(int num[]){
int tp =0;
for(int i =0 ; i<num.length ; i++){
int curr = num[i];
for(int j = i+1 ; j<num.length;j++){
System.out.print("("+curr+","+num[j]+")");
tp++;
}
System.out.println();
}
System.out.println(tp);
}
public static void subarray0(int arr[]){
for(int i = 0 ;i<arr.length;i++){
for(int j = i;j<arr.length;j++){
for(int k = i;k<=j;k++){
System.out.print("{"+arr[k]+"}");
}
System.out.println();
}
System.out.println();
}
// System.out.print(sum);
}
public static void maxsubarraySum(int arr[]){
int currsum=0;
int max = Integer.MIN_VALUE;
for(int i = 0 ;i<arr.length;i++){
for(int j = i;j<arr.length;j++){
currsum=0;
for(int k = i;k<=j;k++){
currsum+=arr[k];
}
System.out.println("CURRENT SUM IS :- "+currsum+" ");
if(currsum>max){
max=currsum;
}
}
// System.out.println();
}
System.out.print("max SUM IS :- "+max+" ");
// System.out.print(sum);
}
public static void maxsubarraySumprefix(int arr[]){
int currsum=0;
int max = Integer.MIN_VALUE;
int prefix[] = new int[arr.length];
prefix[0]=arr[0];
for(int i= 1; i<prefix.length;i++){
prefix[i]=prefix[i-1]+arr[i];
}
for(int i = 0 ;i<arr.length;i++){
for(int j = i;j<arr.length;j++){
currsum=0;
currsum = i == 0 ? prefix[j]:prefix[j]-prefix[i-1];
if(currsum>max){
max=currsum;
}
}
}
System.out.print("max SUM IS :- "+max+" ");
// System.out.print(sum);
}
public static void kadanesalgo(int arr[]){
int maxsum = Integer.MIN_VALUE;
int currsum = 0;
for(int i = 0 ; i<arr.length;i++){
currsum+=arr[i];
if(currsum<0){
currsum=0;
}
maxsum = Math.max(currsum,maxsum);
}
System.out.print("max sum is "+maxsum);
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
// int m = sc.nextInt();
int arr[] = {k,0ojtgf};
// int arr[] = {1,-2,6,-1,3};
// rev(arr);
// printarray(arr);
// pairs(arr);
// subarray0(arr)
// maxsubarraySum(arr);
// maxsubarraySumprefix(arr);
kadanesalgo(arr);
}
}