Skip to content

Commit fce25f5

Browse files
author
Dhananjay Nagargoje
committed
on searching
1 parent dfdadc9 commit fce25f5

File tree

2 files changed

+185
-0
lines changed

2 files changed

+185
-0
lines changed
+166
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,170 @@
11
package problems.onsearching;
22

33
public class RoatetedArray {
4+
static class Solution {
5+
6+
public int searchasc(int[] a, int key, int l, int h) {
7+
// int l = 0;
8+
// int h = a.length-1;
9+
if (l >= 0 && h < a.length) {
10+
while (l <= h) {
11+
int m = l + (h - l) / 2;
12+
if (a[m] == key) {
13+
return m;
14+
} else if (a[m] > key) {
15+
h = m - 1;
16+
} else {
17+
l = m + 1;
18+
}
19+
}
20+
21+
}
22+
return -1;
23+
}
24+
25+
public int searchdesc(int[] a, int key, int l, int h) {
26+
// int l = 0;
27+
// int h = a.length-1;
28+
if (l >= 0 && h <= a.length) {
29+
while (l <= h) {
30+
int m = l + (h - l) / 2;
31+
if (a[m] == key) {
32+
return m;
33+
} else if (a[m] > key) {
34+
l = m + 1;
35+
} else {
36+
h = m - 1;
37+
}
38+
}
39+
40+
}
41+
return -1;
42+
}
43+
44+
public int piv(final int[] a, int key) {
45+
int l = 0;
46+
int h = a.length - 1;
47+
while (l <= h) {
48+
int m = l + (h - l) / 2;
49+
if ((m > 0 && a[m - 1] < a[m]) && (m + 1 < a.length && a[m] > a[m + 1])) {
50+
return m;
51+
} else if (a[m] >= a[l]) {
52+
l = m + 1;
53+
} else {
54+
h = m - 1;
55+
}
56+
}
57+
return -1;
58+
}
59+
60+
public int search(final int[] a, int key) {
61+
int pivot = piv(a, key);
62+
int asc = searchdesc(a, key, 0, Math.max(0, pivot - 1));
63+
if (asc > 0) return asc;
64+
int desc = searchasc(a, key, Math.max(pivot, 0), a.length - 1);
65+
return Math.max(-1, desc);
66+
}
67+
68+
69+
public int pivEle(final int[] a) {
70+
int l = 0;
71+
int h = a.length - 1;
72+
while (l <= h) {
73+
int m = l + (h - l) / 2;
74+
if ((m > 0 && a[m - 1] < a[m]) && (m + 1 < a.length && a[m] > a[m + 1])) {
75+
return a[m];
76+
} else if (a[m] >= a[l]) {
77+
l = m + 1;
78+
} else {
79+
h = m - 1;
80+
}
81+
}
82+
return -1;
83+
}
84+
85+
86+
public int solve(int[] a) {
87+
if (a.length == 1) return a[0];
88+
int piv = pivEle(a);
89+
if (piv > 0) return piv;
90+
if (a[0] > a[1]) return a[0];
91+
return a[a.length - 1];
92+
93+
}
94+
95+
96+
public int searchmat(int[][] a, int key) {
97+
int l = 0;
98+
int h = a.length - 1;
99+
if (l >= 0 && h < a.length) {
100+
while (l <= h) {
101+
int m = l + (h - l) / 2;
102+
if( a[m][0] == key || (a[m][0] < key && a[m][a[m].length-1] >=key)) {
103+
return m;
104+
} else if (a[m][0] > key) {
105+
h = m - 1;
106+
} else {
107+
l = m + 1;
108+
}
109+
}
110+
111+
}
112+
return Math.min(l,a.length-1);
113+
}
114+
115+
public int searchmatrow(int[][] a, int key, int rowno) {
116+
int l = 0;
117+
int h = a[0].length - 1;
118+
while (l <= h) {
119+
int m = l + (h - l) / 2;
120+
if (a[rowno][m] == key) {
121+
return m;
122+
} else if (a[rowno][m] > key) {
123+
h = m - 1;
124+
} else {
125+
l = m + 1;
126+
}
127+
}
128+
129+
return -1;
130+
}
131+
132+
public int search2power(long key) {
133+
long l = 0;
134+
long h = 100000;
135+
while (l <= h) {
136+
long m = l + (h - l) / 2;
137+
long blocks = (m*(m+1))/2;
138+
if (blocks == key) {
139+
return (int)m;
140+
} else if (blocks > key) {
141+
h = m - 1;
142+
} else {
143+
l = m + 1;
144+
}
145+
}
146+
return (int) (l*(l+1)/2 > key ? l-1:l);
147+
}
148+
149+
}
150+
151+
//2
152+
153+
154+
public static void main(String[] args) {
155+
Solution solution = new Solution();
156+
int[][] m = {{3, 3, 11, 12, 14},
157+
{16, 17, 30, 34, 35},
158+
{45, 48, 49, 50, 52},
159+
{56, 59, 63, 63, 65},
160+
{67, 71, 72, 73, 79},
161+
{80, 84, 85, 85, 88},
162+
{88, 91, 92, 93, 94}};
163+
164+
// System.out.println(solution.searchmat(m,94));
165+
// System.out.println(solution.searchmatrow(m,94,solution.searchmat(m, 94)));
166+
167+
System.out.println(solution.search2power(1000000000));
168+
169+
}
4170
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,23 @@
11
package problems.onsearching;
22

3+
import java.util.Comparator;
4+
import java.util.PriorityQueue;
5+
36
public class SmallestBaseAllOne {
7+
public static int solve(int A, int B, int C, int D, int E, int F, int G, int H) {
8+
return (isInside(A, B, C, D, E, F)
9+
|| isInside(A, B, C, D, G, H)
10+
|| isInside(A, B, C, D, E, H)
11+
|| isInside(A, B, C, D, G, F))== true ? 1 : 0;
12+
}
13+
14+
public static boolean isInside(int x1, int y1, int x2, int y2, int x, int y){
15+
return ((x >= x1 && x <= x2) && ( y >= y1 && y <= y2));
16+
}
17+
public static void main(String[] args) {
18+
PriorityQueue<Integer> pq = new PriorityQueue(Comparator.reverseOrder());
19+
20+
System.out.println(solve(12,47,39,72, 8,3,47,55));
21+
}
22+
423
}

0 commit comments

Comments
 (0)