Skip to content

Commit fda5591

Browse files
committed
Signed-off-by: yuduozhou <[email protected]>
1 parent a3f148d commit fda5591

5 files changed

+112
-7
lines changed

InsertIntervals.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInt
1515
boolean inserted = false;
1616
for (int i = 0; i < intervals.size(); i++){
1717
Interval i1 =intervals.get(i);
18-
if (smaller(i1, newInterval)){
18+
if (i1.end < newInterval.start)){
1919
result.add(i1);
2020
}
21-
else if (smaller(newInterval, i1)){
21+
else if (newInterval.end < i1.start){
2222
result.add(newInterval);
2323
result.addAll(intervals.subList(i, intervals.size()));
2424
inserted = true;
@@ -31,11 +31,7 @@ else if (smaller(newInterval, i1)){
3131
if (!inserted) result.add(newInterval);
3232
return result;
3333
}
34-
35-
public boolean smaller(Interval i1, Interval i2){
36-
return i1.end < i2.start;
37-
}
38-
34+
3935
public Interval merge(Interval i1, Interval i2){
4036
int start = (i1.start < i2.start) ? i1.start : i2.start;
4137
int end = (i1.end > i2.end) ? i1.end : i2.end;

IntegerToRoman.java

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
public class Solution {
2+
public String intToRoman(int num) {
3+
// Start typing your Java solution below
4+
// DO NOT write main() function
5+
if (num == 0) return "";
6+
HashMap<Integer, String> map = new HashMap<Integer, String>();
7+
setup(map);
8+
int[] dig = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
9+
String result = "";
10+
for (int i = 0; i < dig.length; i++){
11+
int pivot = dig[i];
12+
while(num - pivot >= 0){
13+
result += map.get(pivot);
14+
num -= pivot;
15+
}
16+
}
17+
return result;
18+
}
19+
public void setup(HashMap<Integer, String> map) {
20+
map.put(1, "I");
21+
map.put(4, "IV");
22+
map.put(5, "V");
23+
map.put(9, "IX");
24+
map.put(10, "X");
25+
map.put(40, "XL");
26+
map.put(50, "L");
27+
map.put(90, "XC");
28+
map.put(100, "C");
29+
map.put(400, "CD");
30+
map.put(500, "D");
31+
map.put(900, "CM");
32+
map.put(1000, "M");
33+
}
34+
}

InterleavingStrings.java

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
public class Solution {
2+
public boolean isInterleave(String s1, String s2, String s3) {
3+
// Start typing your Java solution below
4+
// DO NOT write main() function
5+
int l1 = s1.length();
6+
int l2 = s2.length();
7+
int l3 = s3.length();
8+
if (l3 != l1 + l2){
9+
return false;
10+
}
11+
if (s1.equals("") || s2.equals("")){
12+
return s2.equals(s3) || s1.equals(s3);
13+
}
14+
15+
if (s1.charAt(l1 - 1) == s3.charAt(l3 - 1)){
16+
// s3.last == both s1.last and s2.last
17+
if (s2.charAt(l2 - 1) == s3.charAt(l3 - 1)) {
18+
return (isInterleave(s1.substring(0, l1 - 1), s2, s3.substring(0, l3 - 1)) ||
19+
isInterleave(s1, s2.substring(0, l2 - 1), s3.substring(0, l3 - 1)));
20+
}
21+
// s3.last == s1.last
22+
else {
23+
return isInterleave(s1.substring(0, l1 - 1), s2, s3.substring(0, l3 - 1));
24+
}
25+
}
26+
// s3.last == s2.last
27+
else if (s2.charAt(l2 - 1) == s3.charAt(l3 - 1)) {
28+
return isInterleave(s1, s2.substring(0, l2 - 1), s3.substring(0, l3 - 1));
29+
}
30+
else {
31+
return false;
32+
}
33+
}
34+
}

JumpGame1.java

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
public class Solution {
2+
public boolean canJump(int[] A) {
3+
// Start typing your Java solution below
4+
// DO NOT write main() function
5+
if (A.length < 1) return false;
6+
if (A.length == 1) return true;
7+
int marker = A.length - 1;
8+
for (int i = A.length - 2; i >=0; i--){
9+
if(A[i] >= marker - i){
10+
marker = i;
11+
}
12+
}
13+
return marker == 0;
14+
}
15+
}

JumpGame2.java

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
public class Solution {
2+
public int jump(int[] A) {
3+
// Start typing your Java solution below
4+
// DO NOT write main() function
5+
if (A.length <= 1) return 0;
6+
int len = A.length;
7+
int steps = 0;
8+
int marker = 0;
9+
// This will lead us to one step from the end.
10+
while (A[marker] < len - 1 - marker){
11+
int maxRange = marker + A[marker];
12+
int maxFrom = marker;
13+
for (int j = 1; j <= A[marker]; j++){
14+
if (j + marker >= len) break;
15+
if (A[marker + j] + marker + j > maxRange){
16+
maxRange = A[marker + j] + marker + j;
17+
maxFrom = marker + j;
18+
}
19+
}
20+
marker = maxFrom;
21+
steps++;
22+
}
23+
// Jump the last step.
24+
return steps + 1;
25+
}
26+
}

0 commit comments

Comments
 (0)