Skip to content

Commit 0765a89

Browse files
committed
20190303
1 parent 523ae79 commit 0765a89

File tree

8 files changed

+128
-4
lines changed

8 files changed

+128
-4
lines changed

Diff for: code/lc138.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public RandomListNode copyRandomList(RandomListNode head) {
3131
node = head;
3232
RandomListNode res = head.next;
3333
RandomListNode temp = head.next;
34-
while(temp.next!=null){
34+
while(temp!=null&&temp.next!=null){
3535
node.next = temp.next;
3636
temp.next = node.next.next;
3737
node = node.next;

Diff for: code/lc242.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* 题意:字符串t是否为s打乱后的重排列
55
* 难度:Easy
66
* 分类:Hash Table, Sort
7-
* 思路:
8-
* Tips:
7+
* 思路:hash table 计算即可,<0了直接返回false
8+
* Tips:和重排列那题联系一下 lc46
99
*/
1010
public class lc242 {
1111
public boolean isAnagram(String s, String t) {

Diff for: code/lc328.java

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package code;
2+
/*
3+
* 328. Odd Even Linked List
4+
* 题意:奇数的node都在偶数node的后面,第一个节点index为0
5+
* 难度:Medium
6+
* 分类:Linked List
7+
* 思路:while的条件很不好想,记住:这种跳两次的迭代,都判断后边那个节点的 next!=null 为终止条件
8+
* Tips:lc318
9+
*/
10+
public class lc328 {
11+
public class ListNode {
12+
int val;
13+
ListNode next;
14+
ListNode(int x) {
15+
val = x;
16+
}
17+
}
18+
public ListNode oddEvenList(ListNode head) {
19+
if(head==null||head.next==null) return head;
20+
ListNode even = head;
21+
ListNode odd_head = head.next;
22+
ListNode odd = head.next;
23+
while( odd!=null && odd.next!=null ){ //这个条件很难想通
24+
even.next = even.next.next;
25+
odd.next = odd.next.next;
26+
even = even.next;
27+
odd = odd.next;
28+
}
29+
even.next = odd_head;
30+
return head;
31+
}
32+
}

Diff for: code/lc334.java

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package code;
2+
/*
3+
* 334. Increasing Triplet Subsequence
4+
* 题意:数组中是否存在递增的3个数
5+
* 难度:Medium
6+
* 分类:Array
7+
* 思路:思路很清奇,自己没想到,时间空间复杂度都是O(1)。其实和lc300 O(nlgn) 解法思路是一样的,只是固定了dp数组长度为两个数。
8+
* Tips:lc300最长递增子序列
9+
*/
10+
public class lc334 {
11+
public boolean increasingTriplet(int[] nums) {
12+
int small = Integer.MAX_VALUE;
13+
int big = Integer.MAX_VALUE;
14+
for (int i = 0; i < nums.length ; i++) {
15+
if(nums[i]<small) small = nums[i];
16+
else if(nums[i]<big) big = nums[i];
17+
else return true;
18+
}
19+
return false;
20+
}
21+
}

Diff for: code/lc341.java

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package code;
2+
3+
import java.util.Iterator;
4+
import java.util.List;
5+
import java.util.Stack;
6+
7+
public class lc341 {
8+
public interface NestedInteger {
9+
// @return true if this NestedInteger holds a single integer, rather than a nested list.
10+
public boolean isInteger();
11+
// @return the single integer that this NestedInteger holds, if it holds a single integer
12+
// Return null if this NestedInteger holds a nested list
13+
public Integer getInteger();
14+
// @return the nested list that this NestedInteger holds, if it holds a nested list
15+
// Return null if this NestedInteger holds a single integer
16+
public List<NestedInteger> getList();
17+
}
18+
/**
19+
* Your NestedIterator object will be instantiated and called as such:
20+
* NestedIterator i = new NestedIterator(nestedList);
21+
* while (i.hasNext()) v[f()] = i.next();
22+
*/
23+
public class NestedIterator implements Iterator<Integer> {
24+
Stack<NestedInteger> stack = new Stack<>();
25+
public NestedIterator(List<NestedInteger> nestedList) {
26+
for(int i = nestedList.size() - 1; i >= 0; i--) {
27+
stack.push(nestedList.get(i));
28+
}
29+
}
30+
31+
@Override
32+
public Integer next() {
33+
return stack.pop().getInteger();
34+
}
35+
36+
@Override
37+
public boolean hasNext() {
38+
while(!stack.isEmpty()) {
39+
NestedInteger curr = stack.peek();
40+
if(curr.isInteger()) {
41+
return true;
42+
}
43+
stack.pop();
44+
for(int i = curr.getList().size() - 1; i >= 0; i--) {
45+
stack.push(curr.getList().get(i));
46+
}
47+
}
48+
return false;
49+
}
50+
}
51+
}

Diff for: code/lc347.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public static List<Integer> topKFrequent(int[] nums, int k) {
2222
for (int i = 0; i < nums.length ; i++) { //放入hashmap计数
2323
hm.put(nums[i], hm.getOrDefault(nums[i], 0)+1);
2424
}
25-
for( int i : hm.keySet() ){ //key,value反转,放入treemap
25+
for( int i : hm.keySet() ){ //key,value反转,放入treemap TreeMap中默认是按照升序进行排序的
2626
int freq = hm.get(i);
2727
if(tm.containsKey(freq))
2828
tm.get(freq).add(i);

Diff for: code/lc378.java

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package code;
2+
/*
3+
* 378. Kth Smallest Element in a Sorted Matrix
4+
* 题意:在矩阵中搜索第k大的数,横轴和纵轴都是有序的
5+
* 难度:Medium
6+
* 分类:Binary Search, Heap
7+
* 思路:
8+
* Tips:lc23方法很像
9+
*/
10+
public class lc378 {
11+
public int kthSmallest(int[][] matrix, int k) {
12+
13+
}
14+
}

Diff for: readme.md

+6
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,12 @@ Language: Java
127127
| 227 [Java](./code/lc227.java)
128128
| 230 [Java](./code/lc230.java)
129129
| 234 [Java](./code/lc234.java)
130+
| 237 [Java](./code/lc237.java)
130131
| 238 [Java](./code/lc238.java)
131132
| 239 [Java](./code/lc239.java)
132133
| 240 [Java](./code/lc240.java)
134+
| 242 [Java](./code/lc242.java)
135+
| 268 [Java](./code/lc268.java)
133136
| 279 [Java](./code/lc279.java)
134137
| 283 [Java](./code/lc283.java)
135138
| 287 [Java](./code/lc287.java)
@@ -141,6 +144,9 @@ Language: Java
141144
| 312 [Java](./code/lc312.java)
142145
| 315 [Java](./code/lc315.java)
143146
| 322 [Java](./code/lc322.java)
147+
| 324 [Java](./code/lc324.java)
148+
| 326 [Java](./code/lc326.java)
149+
| 329 [Java](./code/lc329.java)
144150
| 337 [Java](./code/lc337.java)
145151
| 338 [Java](./code/lc338.java)
146152
| 347 [Java](./code/lc347.java)

0 commit comments

Comments
 (0)