Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit782c3f4

Browse files
committed
add new files
1 parent455af2b commit782c3f4

14 files changed

+163
-6
lines changed

‎1. Two Sum.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package main
22

3+
/**
4+
用hash保存另一个数的值,遍历的同时判断是否存在
5+
*/
36
functwoSum(nums []int,targetint) []int {
47
m:=make(map[int]int)
58
fori:=0;i<len(nums);i++ {

‎14. Longest Common Prefix.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ func longestCommonPrefix(strs []string) string {
88
}
99
minLen:=math.MaxInt32
1010
minStr:=""
11+
//先找到最短的字符串
1112
for_,v:=rangestrs {
1213
l:=len(v)
1314
ifl<minLen {

‎15. 3Sum.go‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ package main
33
import"sort"
44

55
functhreeSum(nums []int) [][]int {
6+
//先排序
67
sort.Ints(nums)
8+
79
res:=make([][]int,0)
810
f:=func(nums []int,beginint,endint,targetint) {
9-
forbegin<end {
11+
forbegin<end {//从两端向中间遍历
1012
ifnums[begin]+nums[end]+target==0 {
1113
r:=make([]int,0)
1214
r=append(r,nums[begin],nums[end],target)
1315
res=append(res,r)
16+
//遇到相等的,就快进
1417
forbegin<end&&nums[begin]==nums[begin+1] {
1518
begin++
1619
}

‎17. Letter Combinations of a Phone Number.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package main
22

3+
/*
4+
回溯算法
5+
*/
36
funcletterCombinations(digitsstring) []string {
47
table:= []string{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}
58
ret:= []string{}

‎19. Remove Nth Node From End of List.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ type ListNode struct {
66
}
77

88
/**
9-
* 快慢指针
9+
* 快慢指针,快指针先前进n步,然后两个指针一起前进,当快指针走到末尾的时候,慢指针所在的位置,就是目标位置
1010
*/
1111
funcremoveNthFromEnd(head*ListNode,nint)*ListNode {
1212
cur:=head

‎2. Add Two Numbers.go‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@ type ListNode struct {
55
Next*ListNode
66
}
77

8+
/**
9+
注意的问题:
10+
1.进位
11+
2.两个list的长度不一定相等
12+
*/
813
funcaddTwoNumbers(l1*ListNode,l2*ListNode)*ListNode {
914
result:=&ListNode{0,nil}
1015
cursor:=result
1116
leftBit,rightBit,carryBit:=0,0,0
1217

1318
forl1!=nil||l2!=nil||carryBit>0 {
14-
ifl1!=nil {//考虑5+5的情况
19+
ifl1!=nil {
1520
leftBit=l1.Val
1621
l1=l1.Next
1722
}else {
@@ -24,7 +29,7 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
2429
}else {
2530
rightBit=0
2631
}
27-
32+
//考虑有进位的情况
2833
cursor.Val= (leftBit+rightBit+carryBit)%10
2934
carryBit= (leftBit+rightBit+carryBit)/10
3035

‎21. Merge Two Sorted Lists.go‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ type ListNode struct {
55
Next*ListNode
66
}
77

8+
/**
9+
递归操作
10+
当某一个为空的时候,退出
11+
*/
812
funcmergeTwoLists(l1*ListNode,l2*ListNode)*ListNode {
913
ifl1==nil {
1014
returnl2

‎3. Longest Substring Without Repeating Characters.go‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package main
22

3+
/**
4+
滑动窗口,如果在hash表里找到了当前的字符,重新设置窗口的起点位置
5+
*/
36
funclengthOfLongestSubstring(sstring)int {
47
m:=make(map[rune]int)
58
start,max:=-1,0
69

710
fork,v:=ranges {
8-
iflast,ok:=m[v];ok&&last>start {
11+
iflast,ok:=m[v];ok&&last>start {//如果发现重复字符
912
start=last
1013
}
1114
m[v]=k
12-
ifk-start>max {
15+
ifk-start>max {//保存最大值
1316
max=k-start
1417
}
1518
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package main
2+
3+
typeTreeNodestruct {
4+
Valint
5+
Left*TreeNode
6+
Right*TreeNode
7+
}
8+
9+
/**
10+
用队列保存节点,一层一层的处理
11+
从队列里取出节点的同时,判断左右子树是否为空,不为空则入队列
12+
*/
13+
14+
funcaverageOfLevels1(root*TreeNode) []float64 {
15+
ret:= []float64{}
16+
ifroot==nil {
17+
returnret
18+
}
19+
cnt,sum:=0,0
20+
q:= []*TreeNode{root}
21+
forlen(q)>0 {
22+
cnt=len(q)
23+
sum=0
24+
fori:=0;i<cnt;i++ {
25+
tmp:=q[0]
26+
q=q[1:]
27+
iftmp.Left!=nil {
28+
q=append(q,tmp.Left)
29+
}
30+
iftmp.Right!=nil {
31+
q=append(q,tmp.Right)
32+
}
33+
sum+=tmp.Val
34+
}
35+
ret=append(ret,float64(sum)/float64(cnt))
36+
}
37+
returnret
38+
}

‎643. Maximum Average Subarray I.go‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
/**
4+
先计算前k个的sum,然后一直向右滑动,统计最大值
5+
*/
6+
funcfindMaxAverage(nums []int,kint)float64 {
7+
sum:=0
8+
fori:=0;i<k;i++ {
9+
sum+=nums[i]
10+
}
11+
m:=sum
12+
fori:=k;i<len(nums);i++ {
13+
sum=sum-nums[i-k]+nums[i]
14+
ifsum>m {
15+
m=sum
16+
}
17+
}
18+
returnfloat64(m)/float64(k)
19+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp