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

Commit9bd74c2

Browse files
committed
add new files
1 parent18ad976 commit9bd74c2

11 files changed

+242
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
typeListNodestruct {
4+
Valint
5+
Next*ListNode
6+
}
7+
8+
//两个指针,先计算长度,相遇的时候,两个链表的长度一致
9+
funcgetIntersectionNode(headA,headB*ListNode)*ListNode {
10+
a,b:=headA,headB
11+
la,lb:=0,0
12+
fora!=nil {
13+
a=a.Next
14+
la++
15+
}
16+
forb!=nil {
17+
b=b.Next
18+
lb++
19+
}
20+
a,b=headA,headB
21+
forla<lb {
22+
b=b.Next
23+
b--
24+
}
25+
forlb<la {
26+
a=a.Next
27+
a--
28+
}
29+
fora!=b {
30+
a=a.Next
31+
b=b.Next
32+
}
33+
returna
34+
}

‎162. Find Peak Element.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
//不难,就是要注意首尾的判断
4+
funcfindPeakElement(nums []int)int {
5+
l:=len(nums)
6+
ifl==1 {
7+
return0
8+
}
9+
ifnums[0]>nums[1] {//第一个元素
10+
return0
11+
}elseifnums[l-1]>nums[l-2] {//最后一个元素
12+
returnl-1
13+
}else {//中间的
14+
fori:=1;i<len(nums)-1;i++ {
15+
ifnums[i]>nums[i-1]&&nums[i]>nums[i+1] {
16+
returni
17+
}
18+
}
19+
}
20+
return-1
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package main
2+
3+
//从两端向中间收敛
4+
functwoSum(numbers []int,targetint) []int {
5+
l,r:=0,len(numbers)-1
6+
forl<r {
7+
ifnumbers[l]+numbers[r]<target {
8+
l++
9+
}elseifnumbers[l]+numbers[r]>target {
10+
r--
11+
}else {
12+
return []int{l+1,r+1}
13+
}
14+
}
15+
returnnil
16+
}

‎169. Majority Element.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
//NB
4+
funcmajorityElement(nums []int)int {
5+
c:=nums[0]
6+
count:=1
7+
fori:=1;i<len(nums);i++ {
8+
ifnums[i]==c {
9+
count++
10+
}else {
11+
count--
12+
}
13+
ifcount<1 {
14+
count=1
15+
c=nums[i]
16+
}
17+
}
18+
returnc
19+
}

‎179. Largest Number.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package main
2+
3+
import (
4+
"sort"
5+
"strconv"
6+
)
7+
8+
//用内置排序接口
9+
typeintSlice []int
10+
11+
funcnewIntSlice(a []int)intSlice {
12+
b:=intSlice{}
13+
for_,v:=rangea {
14+
b=append(b,v)
15+
}
16+
returnb
17+
}
18+
func (sintSlice)Len()int {
19+
returnlen(s)
20+
}
21+
22+
func (sintSlice)Less(i,jint)bool {
23+
stri:=strconv.Itoa(s[i])
24+
strj:=strconv.Itoa(s[j])
25+
s1,_:=strconv.Atoi(stri+strj)
26+
s2,_:=strconv.Atoi(strj+stri)
27+
returns1>s2
28+
}
29+
30+
func (sintSlice)Swap(i,jint) {
31+
s[i],s[j]=s[j],s[i]
32+
}
33+
34+
funclargestNumber(nums []int)string {
35+
s:=newIntSlice(nums)
36+
sort.Sort(s)
37+
res:=""
38+
for_,v:=ranges {
39+
res+=strconv.Itoa(v)
40+
ifres=="0" {
41+
res=""
42+
}
43+
}
44+
ifres=="" {
45+
return"0"
46+
}
47+
returnres
48+
}

‎189. Rotate Array.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
funcrotate(nums []int,kint) {
4+
ifk==0||len(nums)==0 {
5+
return
6+
}
7+
k=k%len(nums)
8+
ifk==0 {
9+
return
10+
}
11+
tmp:=nums
12+
nums=append(nums[len(nums)-k:],nums[0:len(nums)-k]...)
13+
fori:=0;i<len(tmp);i++ {
14+
tmp[i]=nums[i]
15+
}
16+
return
17+
}

‎203. Remove Linked List Elements.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+
funcremoveElements(head*ListNode,valint)*ListNode {
5+
ifhead==nil {
6+
returnhead
7+
}
8+
varp1ListNode
9+
p1.Next=head
10+
p2:=&p1
11+
forhead!=nil {
12+
ifhead.Val==val {
13+
p2.Next,head=head.Next,head.Next
14+
}else {
15+
p2,head=head,head.Next
16+
}
17+
}
18+
returnp1.Next
19+
}

‎206. Reverse Linked List.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
typeListNodestruct {
4+
Valint
5+
Next*ListNode
6+
}
7+
8+
funcreverseList(head*ListNode)*ListNode {
9+
varnewhListNode
10+
forhead!=nil {
11+
newh.Next,head.Next,head=head,newh.Next,head.Next
12+
}
13+
returnnewh.Next
14+
15+
}

‎217. Contains Duplicate.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package main
2+
3+
funccontainsDuplicate(nums []int)bool {
4+
iflen(nums)<2 {
5+
returnfalse
6+
}
7+
m:=make(map[int]bool)
8+
for_,v:=rangenums {
9+
_,ok:=m[v]
10+
ifok {
11+
returntrue
12+
}
13+
m[v]=true
14+
}
15+
returnfalse
16+
}

‎219. Contains Duplicate II.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+
funccontainsNearbyDuplicate(nums []int,kint)bool {
5+
iflen(nums)<2 {
6+
returnfalse
7+
}
8+
m:=make(map[int]int)
9+
fori,v:=rangenums {
10+
val,ok:=m[nums[i]]
11+
ifok {
12+
ifval+k>=i {
13+
returntrue
14+
}
15+
}
16+
m[v]=i
17+
}
18+
returnfalse
19+
}

‎226. Invert Binary Tree.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
typeTreeNodestruct {
4+
Valint
5+
Left*TreeNode
6+
Right*TreeNode
7+
}
8+
9+
funcinvertTree(root*TreeNode)*TreeNode {
10+
11+
ifroot==nil {
12+
returnroot
13+
}
14+
root.Left=invertTree(root.Left)
15+
root.Right=invertTree(root.Right)
16+
root.Left,root.Right=root.Right,root.Left
17+
returnroot
18+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp