Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions java/1143-Longest-Common-Subsequence.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,39 @@ public int LCS(String s1, String s2, int i, int j, int[][] dp) {
}
}
}


// Iterative version
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
//O(n*m)/O(n*m) time/memory
if (text1.isEmpty() || text2.isEmpty()) {
return 0;
}

int[][] dp = new int[text1.length() + 1][text2.length() + 1];

for (int i = 0; i <= text1.length(); i++) {
dp[i][0] = 0;
}

for (int j = 0; j <= text2.length(); j++) {
dp[0][j] = 0;
}

for (int i = 1; i <= text1.length(); i++) {
for (int j = 1; j <= text2.length(); j++) {
if (text1.charAt(i - 1) == text2.charAt(j - 1)) {
dp[i][j] = 1 + dp[i - 1][j - 1];

} else {
dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
}

}
}

return dp[text1.length()][text2.length()];
}
}

15 changes: 15 additions & 0 deletions java/252-Meeting-Rooms.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,18 @@ public boolean canAttendMeetings(List<Interval> intervals) {
return true;
}
}


public class Solution {
public boolean canAttendMeetings(List<Interval> intervals) {

Collections.sort(intervals, (a, b) -> a.start - b.start);

for(int i=0; i+1 < intervals.size(); i++){
if(intervals.get(i).end > intervals.get(i+1).start){
return false;
}
}
return true;
}
}
39 changes: 39 additions & 0 deletions java/253-Meeting-Rooms-ii.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,42 @@ public int minMeetingRooms(List<Interval> intervals) {
return count;
}
}

// Two pointer approach
public class Solution {
public int minMeetingRooms(List<Interval> intervals) {
if (intervals.size() == 0) {
return 0;
}

int len = intervals.size();
int[] startTime = new int[len];
int[] endTime = new int[len];

for (int i = 0; i < len; i++) {
startTime[i] = intervals.get(i).start;
endTime[i] = intervals.get(i).end;
}

Arrays.sort(startTime);
Arrays.sort(endTime);

int res = 0;
int count = 0;
int s = 0;
int e = 0;

while (s < len) {
if (startTime[s] < endTime[e]) {
s++;
count++;
} else {
e++;
count--;
}
res = Math.max(res, count);
}

return res;
}
}
27 changes: 27 additions & 0 deletions java/42-Trapping-Rain-Water.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,30 @@ public int trap(int[] heights) {
return c;
}
}

//O(1) space
class Solution {
public int trap(int[] heights) {

if (heights.length == 0) return 0;

int l = 0, r = heights.length - 1;
int leftMax = heights[l], rightMax = heights[r];
int res = 0;

while (l < r) {
if (leftMax < rightMax) {
l++;
leftMax = Math.max(leftMax, heights[l]);
res += leftMax - heights[l];
} else {
r--;
rightMax = Math.max(rightMax, heights[r]);
res += rightMax - heights[r];
}
}

return res;

}
}