Skip to content

Commit 65dcfd9

Browse files
authored
Merge pull request #1316 from joshiujjawal22/master
Adding 3 sum problem, array rotation
2 parents 88c6ad9 + 3b52109 commit 65dcfd9

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed

Others/3 sum.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package Others;
2+
3+
import java.util.Scanner;
4+
import java.util.Arrays;
5+
6+
/**
7+
* To find triplet equals to given sum in complexity O(n*log(n))
8+
*
9+
*
10+
* Array must be sorted
11+
*
12+
* @author Ujjawal Joshi
13+
* @date 2020.05.18
14+
*
15+
* Test Cases:
16+
Input:
17+
* 6 //Length of array
18+
12 3 4 1 6 9
19+
target=24
20+
* Output:3 9 12
21+
* Explanation: There is a triplet (12, 3 and 9) present
22+
in the array whose sum is 24.
23+
*
24+
*
25+
26+
*/
27+
28+
29+
class threesum{
30+
public static void main(String args[])
31+
{
32+
Scanner sc =new Scanner(System.in);
33+
int n=sc.nextInt(); //Length of an array
34+
35+
int a[]=new int[n];
36+
37+
for(int i=0;i<n;i++)
38+
{
39+
a[i]=sc.nextInt();
40+
}
41+
System.out.println("Target");
42+
int n_find=sc.nextInt();
43+
44+
Arrays.sort(a); // Sort the array if array is not sorted
45+
46+
for(int i=0;i<n;i++){
47+
48+
int l=i+1,r=n-1;
49+
50+
while(l<r){
51+
if(a[i]+a[l]+a[r]==n_find) {System.out.println(a[i]+" "+ a[l]+" "+a[r]);break;} //if you want all the triplets write l++;r--; insted of break;
52+
else if(a[i]+a[l]+a[r]<n_find) l++;
53+
else r--;
54+
}
55+
}
56+
57+
58+
59+
}
60+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package Others;
2+
3+
import java.util.*;
4+
5+
/**
6+
* Rotation of array without using extra space
7+
*
8+
*
9+
* @author Ujjawal Joshi
10+
* @date 2020.05.18
11+
*
12+
* Test Cases:
13+
14+
Input:
15+
2 //Size of matrix
16+
1 2
17+
3 4
18+
Output:
19+
3 1
20+
4 2
21+
------------------------------
22+
Input:
23+
3 //Size of matrix
24+
1 2 3
25+
4 5 6
26+
7 8 9
27+
Output:
28+
7 4 1
29+
8 5 2
30+
9 6 3
31+
*
32+
*/
33+
34+
class main{
35+
public static void main(String[] args)
36+
{
37+
Scanner sc=new Scanner(System.in);
38+
int n=sc.nextInt();
39+
int a[][]=new int[n][n];
40+
41+
for(int i=0;i<n;i++)
42+
{
43+
for(int j=0;j<n;j++)
44+
{
45+
a[i][j]=sc.nextInt();
46+
}
47+
}
48+
int temp=0;
49+
50+
// Rotation of array by swapping their values
51+
for(int i=0;i<n/2;i++)
52+
{
53+
for(int j=i;j<n-i-1;j++)
54+
{
55+
temp=a[i][j];
56+
a[i][j]=a[n-j-1][i];
57+
a[n-j-1][i]=a[n-i-1][n-j-1];
58+
a[n-i-1][n-j-1]=a[j][n-i-1];
59+
a[j][n-i-1]=temp;
60+
}
61+
}
62+
63+
// printing of sorted array
64+
for(int i=0;i<n;i++){
65+
for(int j=0;j<n;j++){
66+
System.out.print(a[i][j]+" ");
67+
68+
}
69+
System.out.println();
70+
}
71+
72+
}
73+
74+
75+
}

0 commit comments

Comments
 (0)