Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 50ee05a

Browse files
committed
feat: leetcode
1 parent f2e7b20 commit 50ee05a

File tree

3 files changed

+131
-0
lines changed

3 files changed

+131
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// hash table
2+
// 给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
3+
// 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
4+
// 示例:
5+
// 给定 nums = [2, 7, 11, 15], target = 9
6+
// 因为 nums[0] + nums[1] = 2 + 7 = 9
7+
// 所以返回 [0, 1]
8+
9+
package main
10+
11+
import "fmt"
12+
13+
func main() {
14+
nums := []int{2, 7, 11, 15} // 给定一个整数数组nums
15+
target := 9 // 目标值target
16+
arr := twoSum(nums, target) // 在该数组中找出和为目标值的那两个整数,并返回他们的数组下标
17+
fmt.Println("arr = ", arr) // 打印下标
18+
}
19+
20+
func twoSum(nums []int, target int) []int { // 哈希查找的时间复杂度为 O(1)
21+
h := make(map[int]int) // 哈希容器map降低时间复杂度
22+
for k, v := range nums { // 遍历数组nums
23+
if wanted, ok := h[v]; ok {
24+
return []int{wanted, k}
25+
} else {
26+
h[target-v] = k
27+
}
28+
}
29+
return nil
30+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
)
6+
7+
// 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,
8+
// 并且它们的每个节点只能存储一位数字。
9+
// 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
10+
// 您可以假设除了数字0之外,这两个数都不会以0开头。
11+
// 示例:
12+
// 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
13+
// 输出:7 -> 0 -> 8
14+
// 原因:342 + 465 = 807
15+
16+
type ListNode struct {
17+
Val string
18+
}
19+
20+
func Insert2(value int, list *ListNode, position *ListNode) {
21+
tempCell := new(ListNode)
22+
if tempCell == nil {
23+
fmt.Println("out of space")
24+
}
25+
tempCell.Val = value
26+
tempCell.Next = position.Next
27+
position.Next = tempCell
28+
}
29+
30+
func PrintList2(list *ListNode) {
31+
if list.Next != nil {
32+
fmt.Println(list.Val)
33+
PrintList2(list.Next)
34+
} else {
35+
fmt.Println(list.Val)
36+
}
37+
}
38+
39+
func main11() {
40+
l1 := new(ListNode)
41+
listDate := l1
42+
// insert data to l1
43+
Insert2(9, listDate, l1)
44+
Insert2(7, listDate, l1)
45+
Insert2(5, listDate, l1)
46+
l2 := new(ListNode)
47+
//
48+
listDate2 := l2
49+
// insert data to l1
50+
Insert2(4, listDate2, l2)
51+
Insert2(2, listDate2, l2)
52+
Insert2(8, listDate2, l2)
53+
l3 := addTwoNumbers(l1, l2)
54+
PrintList(l3)
55+
}
56+
57+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
58+
promotion := 0 // 进位值, 只可能为0或1
59+
var head *ListNode // 结果表的头结点
60+
var rear *ListNode // 保存结果表的尾结点
61+
for nil != l1 || nil != l2 {
62+
sum := 0
63+
if nil != l1 {
64+
sum += l1.Val
65+
l1 = l1.Next
66+
}
67+
if nil != l2 {
68+
sum += l2.Val
69+
l2 = l2.Next
70+
}
71+
72+
sum += promotion
73+
promotion = 0
74+
75+
if sum >= 10 {
76+
promotion = 1
77+
sum = sum % 10
78+
}
79+
80+
node := &ListNode{
81+
sum,
82+
nil,
83+
}
84+
85+
if nil == head {
86+
head = node
87+
rear = node
88+
} else {
89+
rear.Next = node
90+
rear = node
91+
}
92+
}
93+
94+
if promotion > 0 {
95+
rear.Next = &ListNode{
96+
promotion,
97+
nil,
98+
}
99+
}
100+
return head
101+
}

shuwen-leetcode.xmind

18.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)