Skip to content

Commit 6617124

Browse files
author
iQQBot
authored
Merge pull request #2 from algorithm004-01/master
merge
2 parents 262e103 + 48c5ba6 commit 6617124

1,796 files changed

Lines changed: 83385 additions & 447 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# 极客大学「算法训练营第四期 - 1 班」作业提交仓库
22

3-
请大家通过该链接查看讲师课件并进行下载: https://pan.baidu.com/s/1k1BHhltBkZLJw0TG-uYC7g 密码:p5op
3+
请大家通过该链接查看讲师课件并进行下载:https://pan.baidu.com/s/1O6HNBmmIzLptVUedLvO18Q 密码:5a9g
4+
5+
《算法四期1-5班社群往期分享汇总》 https://shimo.im/docs/hdx98DVvVwDC6PyC/
46

57
## 仓库目录结构说明
68

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
public class Solution {
2+
public void rotate(int[] nums, int k) {
3+
k %= nums.length;
4+
//先反转整个数组,再反转前k个,再反转后面的
5+
reverse(nums, 0, nums.length - 1);
6+
reverse(nums, 0, k - 1);
7+
reverse(nums, k, nums.length - 1);
8+
}
9+
public void reverse(int[] nums, int start, int end) {
10+
while (start < end) {
11+
int temp = nums[start];
12+
nums[start] = nums[end];
13+
nums[end] = temp;
14+
start++;
15+
end--;
16+
}
17+
}
18+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
3+
ListNode result = new ListNode(0);
4+
ListNode cur = result;
5+
6+
while (l1 != null && l2 != null) {
7+
8+
if (l1.val > l2.val) {
9+
cur.next = l2;
10+
cur = cur.next;
11+
l2 = l2.next;
12+
} else {
13+
cur.next = l1;
14+
cur = cur.next;
15+
l1 = l1.next;
16+
}
17+
18+
}
19+
if (l1 == null) {
20+
cur.next = l2;
21+
} else {
22+
cur.next = l1;
23+
}
24+
25+
return result.next;
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* 使用双指针,i快tail慢。 当i和i-1不同时,tail指针设为i的值
3+
* Created by 115477 on 2019/8/26.
4+
*/
5+
public class n0026 {
6+
public int removeDuplicates(int[] nums) {
7+
int l = nums.length;
8+
if (l <= 1) {
9+
return l;
10+
}
11+
int tail = 1;
12+
for (int i = 1;i<l;i++) {
13+
if (nums[i-1] != nums[i]) {
14+
nums[tail] = nums[i];
15+
tail++;
16+
}
17+
}
18+
return tail;
19+
}
20+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
public class Solution {
2+
public void merge(int[] nums1, int m, int[] nums2, int n) {
3+
4+
int ia = m-1;
5+
int ib = n-1;
6+
7+
for (int i = m+n-1;i>=0;i--) {
8+
if (ia >=0 && ib >= 0) {
9+
if (nums1[ia] > nums2[ib]) {
10+
nums1[i] = nums1[ia];
11+
ia--;
12+
} else {
13+
nums1[i] = nums2[ib];
14+
ib--;
15+
}
16+
} else if (ia >=0 && ib < 0) {
17+
break;
18+
} else if (ia <0 && ib >= 0) {
19+
nums1[i] = nums2[ib];
20+
ib--;
21+
}
22+
}
23+
}
24+
}

Week 01/id_156/186_java.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
public class Solution {
2+
public void rotate(int[] nums, int k) {
3+
int[] a = new int[nums.length];
4+
for (int i = 0; i < nums.length; i++) {
5+
a[(i + k) % nums.length] = nums[i];
6+
}
7+
for (int i = 0; i < nums.length; i++) {
8+
nums[i] = a[i];
9+
}
10+
}
11+
}

Week 01/id_156/21_java.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
3+
if (l1 == null) {
4+
return l2;
5+
}
6+
7+
if (l2 == null) {
8+
return l1;
9+
}
10+
11+
if (l1.val < l2.val) {
12+
l1.next = mergeTwoLists(l1.next, l2);
13+
return l1;
14+
} else {
15+
l2.next = mergeTwoLists(l1, l2.next);
16+
return l2;
17+
}
18+
}
19+
}

Week 01/id_181/11.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
/**
3+
* [11. 盛最多水的容器 - 力扣(LeetCode)](https://leetcode-cn.com/problems/container-with-most-water/)
4+
* @param {number[]} height
5+
* @return {number}
6+
*/
7+
/**
8+
* 粗暴解法,直接遍历 n^2
9+
*/
10+
11+
var maxArea = function(height) {
12+
let maxArea=0;
13+
if(!(height.length>0)) return maxArea
14+
for(let i=0;i<height.length;i++){
15+
for (let j=i+1;j<height.length;j++) {
16+
maxArea = Math.max(maxArea,Math.min(height[i],height[j])*(j-i))
17+
}
18+
}
19+
return maxArea
20+
};
21+
22+
/**双指针法
23+
* 逻辑思路在于
24+
25+
1 i从最左端开始,j从最右端开始,此时长度最长(j-i),高度等于 Math.min(height[i],height[j]);
26+
2 移动短边,可能比当前长 也可能比当前短,那面积可能大于当前
27+
3 移动长边,可能比短边长:高度还是短边,长度变短,所以面积小于当前 可能比短边短,长宽都短,所以 还是小于当前
28+
29+
*/
30+
31+
var maxArea = function(height) {
32+
let maxArea=0;
33+
if(!(height.length>0)) return maxArea;
34+
let i = 0,j = height.length-1;
35+
while(i < j) {
36+
maxArea = height[i] < height[j] ? Math.max(maxArea,(j-i)*height[i++]):Math.max(maxArea,(j-i)*height[j--]);
37+
}
38+
return maxArea
39+
};

Week 01/id_231/leedcode-26.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package lessions
2+
3+
func removeDuplicates(nums []int) int {
4+
if len(nums) == 0 {
5+
return 0
6+
}
7+
8+
cur := 0
9+
for i := 1; i < len(nums); i++ {
10+
if nums[cur] == nums[i] {
11+
continue
12+
}
13+
nums[cur+1] = nums[i]
14+
cur = cur + 1
15+
}
16+
17+
return cur + 1
18+
}

Week 01/id_231/leedcode-88.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package lessions
2+
3+
func merge(nums1 []int, m int, nums2 []int, n int) {
4+
p1 := m - 1
5+
p2 := n - 1
6+
p := m + n - 1
7+
for p1 >= 0 && p2 >= 0 {
8+
if nums1[p1] > nums2[p2] {
9+
nums1[p] = nums1[p1]
10+
p1--
11+
} else {
12+
nums1[p] = nums2[p2]
13+
p2--
14+
}
15+
p--
16+
}
17+
18+
if p1 < 0 && p2 >= 0 {
19+
copyArray(nums1, nums2, 0, p2+1)
20+
}
21+
}
22+
func copyArray(dst, src []int, start, n int) {
23+
for i := 0; i < n; i++ {
24+
dst[start+i] = src[i]
25+
}
26+
}

0 commit comments

Comments
 (0)