Skip to content

Commit e9a5b8d

Browse files
committed
#Modification 28 Array Completed
1 parent aaef137 commit e9a5b8d

File tree

4 files changed

+169
-2
lines changed

4 files changed

+169
-2
lines changed

arrays/Array_Problem_25.java

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,93 @@
11
package arrays;
22
/* Problem Title :-> Given an array of size n and a number k, fin all elements that appear more than " n/k " times.
33
*/
4-
public class Array_Problem_25 {
4+
import java.util.*;
5+
6+
class Array_Problem_25 {
7+
8+
static class eleCount{
9+
int e, c;
10+
}
11+
12+
static void moreThanNdk(int[] a, int n, int k) {
13+
14+
if(k < 2) return;
15+
16+
eleCount[] temp = new eleCount[k-1];
17+
18+
for(int i = 0; i < k-1; i++) {
19+
temp[i] = new eleCount();
20+
}
21+
22+
for(int i = 0; i < k-1; i++) {
23+
temp[i].c = 0;
24+
}
25+
26+
for(int i = 0; i < n; i++) {
27+
28+
int j;
29+
30+
for(j = 0; j < k - 1; j++) {
31+
if(temp[j].e == a[i]) {
32+
temp[j].c += 1;
33+
break;
34+
}
35+
}
36+
37+
if(j == k - 1) {
38+
int l;
39+
for(l = 0; l < k - 1; l++) {
40+
if(temp[1].c == 0) {
41+
temp[l].e = a[i];
42+
temp[l].c = 1;
43+
break;
44+
}
45+
}
46+
47+
if(l == k - 1)
48+
for(l = 0; l < k-1; l++)
49+
temp[l].c -= 1;
50+
}
51+
}
52+
for(int i = 0; i < k -1; i++) {
53+
54+
int ac = 0;
55+
56+
for(int j = 0; j < n; j++) {
57+
if(a[j] == temp[i].e)
58+
ac++;
59+
}
60+
61+
if(ac > n/k)
62+
System.out.println("Number:" + temp[i].e + " Count:" + ac + "\n");
63+
}
64+
}
65+
66+
// Driver Code
67+
public static void main(String[] args) {
68+
69+
System.out.println("First Test\n");
70+
int[] a1 = {4,5,6,7,8,4,4};
71+
int size = a1.length;
72+
int k = 3;
73+
moreThanNdk(a1, size, k);
74+
75+
System.out.println("\nSecond Test\n");
76+
int[] a2 = {4,5,6,7,8,4,4};
77+
size = a2.length;
78+
k = 3;
79+
moreThanNdk(a2, size, k);
80+
81+
System.out.println("\nThird Test\n");
82+
int[] a3 = {4,5,6,7,8,4,4};
83+
size = a3.length;
84+
k = 3;
85+
moreThanNdk(a3, size, k);
86+
87+
System.out.println("\nFourth Test\n");
88+
int[] a4 = {4,5,6,7,8,4,4};
89+
size = a4.length;
90+
k = 3;
91+
moreThanNdk(a4, size, k);
92+
}
593
}

arrays/Array_Problem_26.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,41 @@
22
/* Problem Title :-> Maximum profit by buying and selling a share atmost twice
33
*/
44
public class Array_Problem_26 {
5+
static int maxProfit(int[] price, int n) {
6+
7+
int[] profit = new int[n];
8+
9+
for(int i =0; i < n; i++) {
10+
profit[i] = 0;
11+
}
12+
13+
int max_price = price[n-1];
14+
15+
for(int i = n -2; i >= 0; i--) {
16+
if(price[i] > max_price)
17+
max_price = price[i];
18+
19+
profit[i] = Math.max(profit[i + 1], max_price - price[i]);
20+
}
21+
22+
int min_price = price[0];
23+
24+
for(int i = 1; i < n; i++) {
25+
26+
if(price[i] < min_price)
27+
min_price = price[i];
28+
29+
profit[i]= Math.max(
30+
profit[i-1],
31+
profit[i] + (price[i] - min_price)
32+
);
33+
}
34+
int result = profit[n - 1];
35+
return result;
36+
}
37+
public static void main(String[] args) {
38+
int[] price = {2, 30, 15, 10, 8, 25, 80};
39+
int n = price.length;
40+
System.out.println("Maximum Profit = " + maxProfit(price, n));
41+
}
542
}

arrays/Array_Problem_27.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,26 @@
44
*/
55
public class Array_Problem_27 {
66

7-
7+
static boolean isSubSet(int[] a1, int[] a2, int m, int n) {
8+
int i = 0, j = 0;
9+
for(i = 0; i < n; i++) {
10+
for(j = 0; j < m; j++) {
11+
if(a2[i] == a1[j]) break;
12+
if(j == m) return false;
13+
}
14+
}
15+
return true;
16+
}
17+
18+
public static void main(String args[]) {
19+
int[] a1 = {11, 1, 13, 21, 3, 7};
20+
int[] a2 = {11, 3, 7, 1};
21+
int m = a1.length;
22+
int n = a2.length;
23+
24+
if(isSubSet(a1, a2, m, n))
25+
System.out.println("a2[] is " + "subset of a1[] ");
26+
else
27+
System.out.println("a2 is " + "not a subset of a1[]");
28+
}
829
}

arrays/Array_Problem_29.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,25 @@
22
/* Problem Title :-> Find the triplet that sum to a given value
33
*/
44
public class Array_Problem_29 {
5+
boolean find3Numbers(int[] A, int a_size, int sum) {
6+
int l, r;
7+
for(int i = 0; i < a_size - 2; i++) {
8+
for(int j = i + 1; j < a_size - 1; j++) {
9+
for(int k = j + 1; k < a_size; k++) {
10+
if(A[i] + A[j] + A[k] == sum) {
11+
System.out.println("Triplet is " + A[i] + ", " + A[j] + ", " + A[k]);
12+
return true;
13+
}
14+
}
15+
}
16+
}
17+
return false;
18+
}
19+
public static void main(String[] args) {
20+
Array_Problem_29 triplet = new Array_Problem_29();
21+
int[] A = {1, 4, 45, 6, 10, 8};
22+
int sum = 22;
23+
int a_size = A.length;
24+
triplet.find3Numbers(A, a_size, sum);
25+
}
526
}

0 commit comments

Comments
 (0)