diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b5394a9..84f7941 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -68,7 +68,14 @@
1693706088160
-
+
+ 1693706137051
+
+
+
+ 1693706137051
+
+
diff --git a/Problems/Arrays/BestTimeToBuySellStock.java b/Problems/Arrays/BestTimeToBuySellStock.java
new file mode 100644
index 0000000..27267eb
--- /dev/null
+++ b/Problems/Arrays/BestTimeToBuySellStock.java
@@ -0,0 +1,25 @@
+package Java_DSA.Problems.Arrays;
+
+import java.util.* ;
+import java.io.*;
+import java.util.ArrayList;
+
+public class BestTimeToBuySellStock{
+ public static int maximumProfit(ArrayList prices){
+ // Write your code here.
+ int min = prices.get(0);
+ int maxProfit = 0;
+ for(int i = 0;i < prices.size();i++){
+ min = Math.min(min,prices.get(i));
+ int profit = prices.get(i)-min;
+ maxProfit = Math.max(maxProfit,profit);
+ }
+ return maxProfit;
+ }
+
+ public static void main(String[] args) {
+ ArrayListlist = new ArrayList<>(Arrays.asList(17, 20, 11, 9, 12, 6));
+ int ans = maximumProfit(list);
+ System.out.println(ans);
+ }
+}
\ No newline at end of file
diff --git a/Problems/BitManipulation/MaxInterview.java b/Problems/BitManipulation/MaxInterview.java
new file mode 100644
index 0000000..c19f396
--- /dev/null
+++ b/Problems/BitManipulation/MaxInterview.java
@@ -0,0 +1,33 @@
+package Java_DSA.Problems.BitManipulation;
+
+public class MaxInterview {
+ static int calculateNumberOfDays(String s) {
+ // Write your code here.
+ int n = s.length();
+ int[] dp = new int[n];
+
+ // Base case: The first day's interview can always be attended
+ dp[0] = s.charAt(0) - '0';
+
+ for (int i = 1; i < n; i++) {
+ // Calculate the maximum number of interviews that can be attended
+ // on the current day by considering two possibilities:
+ // 1. Attend the interview on the current day
+ // 2. Skip the interview on the current day
+
+ // If we attend the interview on the current day, add 1 to the
+ // maximum interviews attended on the previous day (if any)
+ int option1 = (i >= 2 ? dp[i - 2] : 0) + (s.charAt(i) - '0');
+
+ // If we skip the interview on the current day, the maximum
+ // interviews attended remain the same as on the previous day
+ int option2 = dp[i - 1];
+
+ // Choose the maximum of the two options
+ dp[i] = Math.max(option1, option2);
+ }
+
+ // The result is the maximum interviews that can be attended on the last day
+ return dp[n - 1];
+ }
+}
\ No newline at end of file
diff --git a/Problems/Matrix/UpperLowerSum.java b/Problems/Matrix/UpperLowerSum.java
new file mode 100644
index 0000000..956c0ac
--- /dev/null
+++ b/Problems/Matrix/UpperLowerSum.java
@@ -0,0 +1,33 @@
+package Java_DSA.Problems.Matrix;
+import java.util.*;
+
+public class UpperLowerSum {
+ static ArrayList sumTriangles(int matrix[][], int n)
+ {
+ ArrayListans = new ArrayList<>();
+ int upper = 0;
+ int lower = 0;
+ for(int i = 0;i < n;i++){
+ for(int j = 0;j < n;j++){
+ if(i<=j){
+ upper += matrix[i][j];
+ }
+ if(j<=i){
+ lower += matrix[i][j];
+ }
+ }
+ }
+ ans.add(upper);
+ ans.add(lower);
+ return ans;
+ }
+
+ public static void main(String[] args) {
+ int mat[][]={{6, 5, 4},
+ {1, 2, 5},
+ {7, 9, 7}};
+ ArrayListlist;
+ list = sumTriangles(mat,3);
+ System.out.println(list);
+ }
+}
diff --git a/Problems/Strings/CountFrequence.java b/Problems/Strings/CountFrequence.java
new file mode 100644
index 0000000..420a65b
--- /dev/null
+++ b/Problems/Strings/CountFrequence.java
@@ -0,0 +1,27 @@
+package Java_DSA.Problems.Strings;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class CountFrequence {
+ public static void main(String[] args) {
+ String inputString = "Java";
+ Map charCountMap = new HashMap<>();
+ inputString = inputString.toLowerCase();
+
+ for (int i = 0; i < inputString.length(); i++) {
+ char c = inputString.charAt(i);
+ if (Character.isLetter(c)) {
+ if (charCountMap.containsKey(c)) {
+ charCountMap.put(c, charCountMap.get(c) + 1);
+ } else {
+ charCountMap.put(c, 1);
+ }
+ }
+ }
+ for (Map.Entry entry : charCountMap.entrySet()) {
+ System.out.println("'" + entry.getKey() + "' occurs " + entry.getValue() + " times.");
+ }
+ }
+}
+
diff --git a/Problems/Strings/Same.java b/Problems/Strings/Same.java
new file mode 100644
index 0000000..5cd03d4
--- /dev/null
+++ b/Problems/Strings/Same.java
@@ -0,0 +1,29 @@
+package Java_DSA.Problems;
+
+public class Same {
+ static long sameDigits(long n) {
+ String s = Long.toString(n);
+ int start = s.charAt(0)-'0';
+ int l = s.length();
+ if(l == 1){
+ return Long.parseLong(s);
+ }
+ else{
+ StringBuilder one = new StringBuilder();
+ for(int i = 0;i < l;i++){
+ one.append('1');
+ }
+ long number = Long.parseLong(one.toString());
+ long min = start*number;
+ long max = (start+1)*number;
+ if(n-min < max - n)
+ return min;
+ else
+ return max;
+ }
+ }
+
+ public static void main(String[] args) {
+ System.out.println(sameDigits(277));
+ }
+}
diff --git a/Problems/Strings/TossScore.java b/Problems/Strings/TossScore.java
new file mode 100644
index 0000000..b0d7ade
--- /dev/null
+++ b/Problems/Strings/TossScore.java
@@ -0,0 +1,27 @@
+package Java_DSA.Problems.Strings;
+import java.util.Scanner;
+
+public class TossScore {
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ System.out.println("Enter string : ");
+ String str = sc.next();
+ int tail = 0,head = 0;
+ int last = str.length()-1;
+ for(int i = 0;i < str.length()-3;i++){
+ if(str.charAt(i)=='H' && str.charAt(i+1)=='H' && str.charAt(i+2)=='H'){
+ last = i + 2;
+ break;
+ }
+ }
+ for(int i = 0;i <= last;i++){
+ if(str.charAt(i)=='T')
+ tail++;
+ else
+ head++;
+ }
+// System.out.println(head);
+// System.out.println(tail);
+ System.out.println((2*head)+(-1*tail));
+ }
+}
diff --git a/Sorting/BubbleSort.java b/Sorting/BubbleSort.java
deleted file mode 100644
index e9cb342..0000000
--- a/Sorting/BubbleSort.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package Java_DSA.Sorting;
-import java.util.*;
-
-public class BubbleSort
-{
- public static void bubbleSort(int[] arr,int n){
- int temp;
- int swap = 0;
- for(int i = 0;i < n-1;i++){
- for(int j = i+1;j < n;j++){
- if(arr[j] < arr[i]){
-
- temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- swap++;
- }
- }
- }
- System.out.println("Swaps : "+swap);
- }
- public static void print(int[] arr,int n){
- for (int i = 0;i < n;i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
- BubbleSort b = new BubbleSort();
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter no of elements : ");
- int n = sc.nextInt();
- int[] arr = new int[n];
- System.out.println("Enter the elements : ");
- for (int i = 0;i < n;i++){
- arr[i] = sc.nextInt();
- }
- print(arr,n);
- bubbleSort(arr,n);
- print(arr,n);
- }
-}
diff --git a/Sorting/InsertionSort.java b/Sorting/InsertionSort.java
deleted file mode 100644
index 6e01567..0000000
--- a/Sorting/InsertionSort.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package Java_DSA.Sorting;
-
-import java.util.Scanner;
-
-public class InsertionSort
-{
- public static void insertionSort(int[] arr,int n){
- int iteration = 0;
- for(int i = 1;i < n;i++){
- int temp = arr[i];
- int j = i - 1;
- while(j >= 0 && arr[j] > temp){
- arr[j+1] = arr[j];
- j--;
- }
- arr[j+1] = temp;
- iteration++;
- }
- System.out.println("Total iteration : "+ iteration);
- }
- public static void print(int[] arr,int n){
- for (int i = 0;i < n;i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
- //BubbleSort b = new BubbleSort();
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter no of elements : ");
- int n = sc.nextInt();
- int[] arr = new int[n];
- System.out.println("Enter the elements : ");
- for (int i = 0;i < n;i++){
- arr[i] = sc.nextInt();
- }
- print(arr,n);
- insertionSort(arr,n);
- print(arr,n);
- }
-}
diff --git a/Sorting/MergeSort.java b/Sorting/MergeSort.java
deleted file mode 100644
index 091f4d9..0000000
--- a/Sorting/MergeSort.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package Java_DSA.Sorting;
-
-import java.util.Scanner;
-
-public class MergeSort {
- public static void mergeSort(int[] arr,int l,int h){
- if (l < h)
- {
- int mid = (l + h) / 2;
- mergeSort(arr, l, mid);
- mergeSort(arr, mid + 1, h);
-
- merge(arr, l, mid, h);
- }
- }
- public static void merge(int[] arr, int l, int m, int h) {
- int n1 = m - l + 1, n2 = h - m;
- int[] a = new int[n1];
- int[] b = new int[n2];
-
- for (int i = 0; i < n1; i++)
- a[i] = arr[l + i];
- for (int j = 0; j < n2; j++)
- b[j] = arr[m + 1 + j];
-
- int i = 0, j = 0, k = l;
-
- while (i < n1 && j < n2) {
- if (a[i] < b[j]) {
- arr[k] = a[i];
- k++;
- i++;
- } else {
- arr[k] = b[j];
- k++;
- j++;
- }
- }
- while (i < n1) {
- arr[k] = a[i];
- i++;
- k++;
- }
- while (j < n2) {
- arr[k] = b[j];
- j++;
- k++;
- }
- }
-
- public static void print(int[] arr,int n){
- for (int i = 0;i < n;i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
-
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter no of elements : ");
- int n = sc.nextInt();
- int[] arr = new int[n];
- System.out.println("Enter the elements : ");
- for (int i = 0;i < n;i++){
- arr[i] = sc.nextInt();
- }
- print(arr,n);
- mergeSort(arr,0,n-1);
- print(arr,n);
- }
-}
diff --git a/Sorting/QuickSort.java b/Sorting/QuickSort.java
deleted file mode 100644
index 5a60b85..0000000
--- a/Sorting/QuickSort.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package Java_DSA.Sorting;
-
-import java.util.Scanner;
-
-public class QuickSort
-{
- public static void swap(int[] arr,int i,int j){
- int temp;
- temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- public static int partition(int[] arr,int low,int high){
- int pivot = arr[low];
- int i = low;
- int j = high;
- do{
- while(arr[i] <= pivot && i < high)
- i++;
- while(arr[j] > pivot)
- j--;
- if(i < j){
- swap(arr,i,j);
- }
- }while(i < j);
-
- swap(arr,low,j);
- return j;
- }
- public static void quickSort(int[] arr,int low,int high){
- if(low < high){
- int pivot = partition(arr,low,high);
- quickSort(arr,low,pivot-1);
- quickSort(arr,pivot+1,high);
- }
- }
- public static void print(int[] arr,int n){
- for (int i = 0;i < n;i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
-
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter no of elements : ");
- int n = sc.nextInt();
- int[] arr = new int[n];
- System.out.println("Enter the elements : ");
- for (int i = 0;i < n;i++){
- arr[i] = sc.nextInt();
- }
- print(arr,n);
- quickSort(arr,0,n-1);
- print(arr,n);
- }
-}
diff --git a/Sorting/SelectionSort.java b/Sorting/SelectionSort.java
deleted file mode 100644
index 4676d4f..0000000
--- a/Sorting/SelectionSort.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package Java_DSA.Sorting;
-
-import java.util.Scanner;
-
-public class SelectionSort {
- public static void selectionSort(int[] arr,int n){
- for(int i = 0;i < n-1;i++){
- int min = i;
- int temp;
- for(int j = i+1;j < n;j++){
- if(arr[j] < arr[min]) {
- min = j;
- }
- }
- if(i!=min){
- temp = arr[i];
- arr[i] = arr[min];
- arr[min] = temp;
- }
- }
- }
- public static void print(int[] arr,int n){
- for (int i = 0;i < n;i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
- //BubbleSort b = new BubbleSort();
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter no of elements : ");
- int n = sc.nextInt();
- int[] arr = new int[n];
- System.out.println("Enter the elements : ");
- for (int i = 0;i < n;i++){
- arr[i] = sc.nextInt();
- }
- print(arr,n);
- selectionSort(arr,n);
- print(arr,n);
- }
-}