Skip to content

Commit e76c4ad

Browse files
committed
ok
1 parent ce7ee46 commit e76c4ad

File tree

5 files changed

+144
-6
lines changed

5 files changed

+144
-6
lines changed

src/com/leetcode/BingChaJi.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.leetcode;
2+
3+
public class BingChaJi {
4+
public int[] father = new int[1000];
5+
public int[] rank = new int[1000];
6+
public void init(int n) {
7+
for (int i = 1; i <= n; i++) {
8+
father[i] = i;
9+
rank[i] = 1;
10+
}
11+
}
12+
public int find(int x) {
13+
return x == father[x] ? x : (father[x] = find(father[x]));
14+
}
15+
public void merge(int i, int j) {
16+
int x = find(i);
17+
int y = find(j);
18+
if (rank[x] <= rank[y]) {
19+
father[x] = y;
20+
} else {
21+
father[y] = x;
22+
}
23+
if (rank[x] == rank[y] && x != y) {
24+
rank[y]++;
25+
}
26+
}
27+
}

src/com/leetcode/Main121.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.leetcode;
2+
3+
/**
4+
* 121. 买卖股票的最佳时机
5+
* 输入: [7,1,5,3,6,4]
6+
* 输出: 5
7+
* 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
8+
* 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
9+
*
10+
* 输入: [7,6,4,3,1]
11+
* 输出: 0
12+
* 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
13+
*/
14+
public class Main121 {
15+
public int maxProfit(int[] prices) {
16+
int res = 0;
17+
int min = Integer.MAX_VALUE;
18+
for (int i = 0; i < prices.length; i++) {
19+
min = Math.min(min, prices[i]);
20+
res = Math.max(res, prices[i] - min);
21+
}
22+
return res;
23+
}
24+
public static void main(String[] args) {
25+
int[] num = {7,1,5,3,6,4};
26+
Main121 m = new Main121();
27+
System.out.println(m.maxProfit(num));
28+
}
29+
}

src/com/leetcode/Main122.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.leetcode;
2+
3+
/**
4+
* 122. 买卖股票的最佳时机 II
5+
*
6+
* 输入: [7,1,5,3,6,4]
7+
* 输出: 7
8+
* 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
9+
*   随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
10+
*/
11+
public class Main122 {
12+
public int maxProfit(int[] prices) {
13+
int res = 0;
14+
for (int i = 1; i < prices.length; i++) {
15+
if (prices[i] > prices[i-1])
16+
res += prices[i] - prices[i-1];
17+
}
18+
return res;
19+
}
20+
public static void main(String[] args) {
21+
int[] num = {7,1,5,3,6,4};
22+
Main122 m = new Main122();
23+
System.out.println(m.maxProfit(num));
24+
}
25+
}

src/com/leetcode/Main234.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.leetcode;
2+
3+
/**
4+
* 234. 回文链表
5+
*/
6+
public class Main234 {
7+
public static class ListNode{
8+
int val;
9+
ListNode next;
10+
ListNode(int val) {
11+
this.val = val;
12+
}
13+
}
14+
ListNode getFirstEnd(ListNode head) {
15+
ListNode fast = head;
16+
ListNode slow = head;
17+
while (fast.next != null && fast.next.next != null) {
18+
slow = slow.next;
19+
fast = fast.next.next;
20+
}
21+
return slow;
22+
}
23+
ListNode reverseListNode(ListNode head) {
24+
ListNode pre = null;
25+
while (head != null) {
26+
ListNode tmp = head.next;
27+
head.next = pre;
28+
pre = head;
29+
head = tmp;
30+
}
31+
return pre;
32+
}
33+
public boolean isPalindrome(ListNode head) {
34+
if (head == null || head.next == null) {
35+
return true;
36+
}
37+
ListNode firstEnd = getFirstEnd(head);
38+
ListNode secondStart = firstEnd.next;
39+
boolean res = true;
40+
secondStart = reverseListNode(secondStart);
41+
ListNode first = head;
42+
ListNode second = secondStart;
43+
while (second != null) {
44+
if (first.val != second.val) {
45+
res = false;
46+
break;
47+
}
48+
first = first.next;
49+
second = second.next;
50+
}
51+
secondStart = reverseListNode(secondStart);
52+
firstEnd.next = secondStart;
53+
return res;
54+
}
55+
}

src/com/leetcode/ThreadTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ public void run() {
6868
// return;
6969
synchronized(number) {
7070
try {
71-
Thread.sleep(300);
71+
Thread.sleep(100);
7272
} catch (InterruptedException e) {
7373
e.printStackTrace();
7474
}
7575
if (number.num % 2 == 0) {
76-
System.out.println(number.num);
76+
System.out.println(Thread.currentThread().getName() + "打印:" + number.num);
7777
number.num += 1;
7878
number.notify();
7979
}
@@ -101,11 +101,11 @@ public void run() {
101101
synchronized(number) {
102102
if (number.num % 2 != 0) {
103103
try {
104-
Thread.sleep(300);
104+
Thread.sleep(100);
105105
} catch (InterruptedException e) {
106106
e.printStackTrace();
107107
}
108-
System.out.println(number.num);
108+
System.out.println(Thread.currentThread().getName() + "打印:" + number.num);
109109
number.num += 1;
110110
number.notify();
111111
}
@@ -130,13 +130,15 @@ public static void main(String[] args) {
130130
// for (int i = 0; i < 2; i++) {
131131
// new Thread(consumer, "线程"+i).start();
132132
// }
133+
133134
Number number = new Number(0);
134135
EvenPrinter evenPrinter = new EvenPrinter(number);
135136
OddPrinter oddPrinter = new OddPrinter(number);
136-
Thread evenThread = new Thread(evenPrinter);
137-
Thread oddThread = new Thread(oddPrinter);
137+
Thread evenThread = new Thread(evenPrinter, "偶数打印线程");
138+
Thread oddThread = new Thread(oddPrinter, "奇数打印线程");
138139
evenThread.start();
139140
oddThread.start();
141+
140142
// try {
141143
// Thread.sleep(2000);
142144
// } catch (InterruptedException e) {

0 commit comments

Comments
 (0)