Skip to content

Commit 00d4878

Browse files
committed
Added 3 medium solutions
1 parent e71da8b commit 00d4878

4 files changed

+121
-9
lines changed

Medium/Find Peak Element.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Solution {
2+
public static int findPeakElement(int[] nums) {
3+
if (nums.length == 1) {
4+
return 0;
5+
}
6+
7+
return findPeakElementImpl(nums, 0, nums.length-1);
8+
}
9+
10+
private static int findPeakElementImpl(int[] nums, int start, int end) {
11+
if (start > end) {
12+
return -1;
13+
}
14+
15+
int mid = (start + end)/2;
16+
17+
if (mid == 0 && nums.length > 1) {
18+
if (nums[mid] > nums[mid+1]) {
19+
return mid;
20+
}
21+
}
22+
else if (mid == nums.length-1 && nums.length > 1) {
23+
if (nums[mid] > nums[mid-1]) {
24+
return mid;
25+
}
26+
}
27+
else {
28+
if (nums.length > 1) {
29+
if (nums[mid] > nums[mid-1] && nums[mid] > nums[mid+1]) {
30+
return mid;
31+
}
32+
}
33+
}
34+
35+
int left = findPeakElementImpl(nums, start, mid-1);
36+
37+
return left == -1 ? findPeakElementImpl(nums, mid+1, end) : left;
38+
}
39+
}
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
class Solution {
2-
public int findKthLargest(int[] nums, int k) {
3-
Arrays.sort(nums);
4-
int i = 0;
5-
int j = nums.length;
6-
while (i<k) {
7-
i++;
8-
j--;
2+
public static int findKthLargest(int[] nums, int k) {
3+
PriorityQueue<Integer> queue = new PriorityQueue<>(k);
4+
for (int i=0; i<nums.length; i++) {
5+
if (queue.size() < k) {
6+
queue.add(nums[i]);
7+
}
8+
else {
9+
if (nums[i] > queue.peek()) {
10+
queue.remove();
11+
queue.add(nums[i]);
12+
}
13+
}
914
}
10-
11-
return nums[j];
15+
16+
return queue.remove();
1217
}
1318
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Solution {
2+
public static List<String> letterCombinations(String digits) {
3+
Map<Integer, String> map = new HashMap<>();
4+
5+
map.put(2, "abc");
6+
map.put(3, "def");
7+
map.put(4, "ghi");
8+
map.put(5, "jkl");
9+
map.put(6, "mno");
10+
map.put(7, "pqrs");
11+
map.put(8, "tuv");
12+
map.put(9, "wxyz");
13+
14+
ArrayList<String> result = new ArrayList<String>();
15+
if(digits == null || digits.length() == 0) {
16+
return result;
17+
}
18+
19+
ArrayList<Character> temp = new ArrayList<Character>();
20+
updateResult(digits, temp, result, map);
21+
22+
return result;
23+
}
24+
25+
private static void updateResult(String digits, ArrayList<Character> temp, ArrayList<String> result, Map<Integer, String> map) {
26+
if (digits.length() == 0) {
27+
char[] charArray = new char[temp.size()];
28+
29+
for (int i=0; i<temp.size(); i++) {
30+
charArray[i] = temp.get(i);
31+
}
32+
33+
result.add(String.valueOf(charArray));
34+
return;
35+
}
36+
37+
Integer curr = Integer.valueOf(digits.substring(0, 1));
38+
String letters = map.get(curr);
39+
40+
for (int i=0; i<letters.length(); i++) {
41+
temp.add(letters.charAt(i));
42+
updateResult(digits.substring(1), temp, result, map);
43+
temp.remove(temp.size()-1);
44+
}
45+
}
46+
}

Medium/Unique Paths.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
3+
public int uniquePaths(int m, int n) {
4+
int[][] arr = new int[m][n];
5+
return getCount(arr, m, n);
6+
}
7+
8+
private int getCount(int[][] arr, int m, int n) {
9+
for (int i=0; i<arr.length; i++) {
10+
for (int j=0; j<arr[0].length; j++) {
11+
if (i == 0 || j ==0) {
12+
arr[i][j] = 1;
13+
}
14+
else {
15+
arr[i][j] = arr[i-1][j] + arr[i][j-1];
16+
}
17+
}
18+
}
19+
20+
return arr[m-1][n-1];
21+
}
22+
}

0 commit comments

Comments
 (0)