From a353494f86d8058cf2f4d6c9fd4afcbab089b83c Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Sun, 17 Oct 2021 13:24:02 +0530 Subject: [PATCH 1/4] Create hello.java --- algorithms/hello.java | 1 + 1 file changed, 1 insertion(+) create mode 100644 algorithms/hello.java diff --git a/algorithms/hello.java b/algorithms/hello.java new file mode 100644 index 0000000..88f7e92 --- /dev/null +++ b/algorithms/hello.java @@ -0,0 +1 @@ +sdcsdcsdd From 7ca1da1f31e330e5714aa33b5484500a29ce8bfc Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Sun, 17 Oct 2021 14:52:26 +0530 Subject: [PATCH 2/4] Minimum_sum_partition.java Given an integer array of size N, the task is to divide it into two sets S1 and S2 such that the absolute difference between their sums is minimum and find the minimum difference. Adding an efficient code for the same. --- Algorithms/Minimum sum partition | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Algorithms/Minimum sum partition diff --git a/Algorithms/Minimum sum partition b/Algorithms/Minimum sum partition new file mode 100644 index 0000000..bc5e1d3 --- /dev/null +++ b/Algorithms/Minimum sum partition @@ -0,0 +1,34 @@ +class Solution +{ + + public int minDifference(int arr[], int n) + { + // Your code goes here + if (n==1) + return arr[0]; + int summing = Arrays.stream(arr).sum(); + int sum = summing/2; + boolean dp[][] = new boolean [n+1][sum+1]; + for(int i=0;i<=n;i++) + { + for(int j =0;j<= sum; j++) + { + if(j==0) + dp[i][j] = true; + else if(i==0) + dp[i][j] = false; + else if(arr[i-1]> j) + dp[i][j] = dp[i-1][j]; + else + dp[i][j] = dp[i-1][j]|| dp[i-1][j-arr[i-1]]; + } + } + for (int i = sum; i>0;i--) + { + if(dp[n][i] == true) + return summing - (2*i); + } + + return 0; + } +} From 8d66039c08f07c171098c9aa3890df701f7e8d31 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Sun, 17 Oct 2021 14:54:08 +0530 Subject: [PATCH 3/4] Delete Minimum sum partition --- Algorithms/Minimum sum partition | 34 -------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 Algorithms/Minimum sum partition diff --git a/Algorithms/Minimum sum partition b/Algorithms/Minimum sum partition deleted file mode 100644 index bc5e1d3..0000000 --- a/Algorithms/Minimum sum partition +++ /dev/null @@ -1,34 +0,0 @@ -class Solution -{ - - public int minDifference(int arr[], int n) - { - // Your code goes here - if (n==1) - return arr[0]; - int summing = Arrays.stream(arr).sum(); - int sum = summing/2; - boolean dp[][] = new boolean [n+1][sum+1]; - for(int i=0;i<=n;i++) - { - for(int j =0;j<= sum; j++) - { - if(j==0) - dp[i][j] = true; - else if(i==0) - dp[i][j] = false; - else if(arr[i-1]> j) - dp[i][j] = dp[i-1][j]; - else - dp[i][j] = dp[i-1][j]|| dp[i-1][j-arr[i-1]]; - } - } - for (int i = sum; i>0;i--) - { - if(dp[n][i] == true) - return summing - (2*i); - } - - return 0; - } -} From eded07137649608ba5b647636fb29e3e6c9d057c Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Sun, 17 Oct 2021 14:56:10 +0530 Subject: [PATCH 4/4] Create Minimum sum partition.java Given an integer array arr of size N, the task is to divide it into two sets S1 and S2 such that the absolute difference between their sums is minimum and find the minimum difference. Attaching the efficient code for same. --- .../Minimum sum partition.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Algorithms/DP/Minimum sum partition/Minimum sum partition.java diff --git a/Algorithms/DP/Minimum sum partition/Minimum sum partition.java b/Algorithms/DP/Minimum sum partition/Minimum sum partition.java new file mode 100644 index 0000000..bc5e1d3 --- /dev/null +++ b/Algorithms/DP/Minimum sum partition/Minimum sum partition.java @@ -0,0 +1,34 @@ +class Solution +{ + + public int minDifference(int arr[], int n) + { + // Your code goes here + if (n==1) + return arr[0]; + int summing = Arrays.stream(arr).sum(); + int sum = summing/2; + boolean dp[][] = new boolean [n+1][sum+1]; + for(int i=0;i<=n;i++) + { + for(int j =0;j<= sum; j++) + { + if(j==0) + dp[i][j] = true; + else if(i==0) + dp[i][j] = false; + else if(arr[i-1]> j) + dp[i][j] = dp[i-1][j]; + else + dp[i][j] = dp[i-1][j]|| dp[i-1][j-arr[i-1]]; + } + } + for (int i = sum; i>0;i--) + { + if(dp[n][i] == true) + return summing - (2*i); + } + + return 0; + } +}