mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
@ -250,23 +250,23 @@ public int searchInsert(int[] nums, int target) {
|
||||
|
||||
|
||||
|
||||
Golang:
|
||||
### Golang
|
||||
|
||||
```golang
|
||||
```go
|
||||
// 第一种二分法
|
||||
func searchInsert(nums []int, target int) int {
|
||||
l, r := 0, len(nums) - 1
|
||||
for l <= r{
|
||||
m := l + (r - l)/2
|
||||
if nums[m] == target{
|
||||
return m
|
||||
}else if nums[m] > target{
|
||||
r = m - 1
|
||||
}else{
|
||||
l = m + 1
|
||||
}
|
||||
}
|
||||
return r + 1
|
||||
left, right := 0, len(nums)-1
|
||||
for left <= right {
|
||||
mid := left + (right-left)/2
|
||||
if nums[mid] == target {
|
||||
return mid
|
||||
} else if nums[mid] > target {
|
||||
right = mid - 1
|
||||
} else {
|
||||
left = mid + 1
|
||||
}
|
||||
}
|
||||
return len(nums)
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -300,6 +300,61 @@ function generateMatrix(n: number): number[][] {
|
||||
|
||||
Go:
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
n := 3
|
||||
fmt.Println(generateMatrix(n))
|
||||
}
|
||||
|
||||
func generateMatrix(n int) [][]int {
|
||||
startx, starty := 0, 0
|
||||
var loop int = n / 2
|
||||
var center int = n / 2
|
||||
count := 1
|
||||
offset := 1
|
||||
res := make([][]int, n)
|
||||
for i := 0; i < n; i++ {
|
||||
res[i] = make([]int, n)
|
||||
}
|
||||
for loop > 0 {
|
||||
i, j := startx, starty
|
||||
|
||||
//行数不变 列数在变
|
||||
for j = starty; j < n-offset; j++ {
|
||||
res[startx][j] = count
|
||||
count++
|
||||
}
|
||||
//列数不变是j 行数变
|
||||
for i = startx; i < n-offset; i++ {
|
||||
res[i][j] = count
|
||||
count++
|
||||
}
|
||||
//行数不变 i 列数变 j--
|
||||
for ; j > starty; j-- {
|
||||
res[i][j] = count
|
||||
count++
|
||||
}
|
||||
//列不变 行变
|
||||
for ; i > startx; i-- {
|
||||
res[i][j] = count
|
||||
count++
|
||||
}
|
||||
startx++
|
||||
starty++
|
||||
offset++
|
||||
loop--
|
||||
}
|
||||
if n%2 == 1 {
|
||||
res[center][center] = n * n
|
||||
}
|
||||
return res
|
||||
}
|
||||
```
|
||||
|
||||
```go
|
||||
func generateMatrix(n int) [][]int {
|
||||
top, bottom := 0, n-1
|
||||
|
@ -652,6 +652,106 @@ class MyLinkedList:
|
||||
|
||||
Go:
|
||||
|
||||
```go
|
||||
//单链表实现
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var list = new(SingleLinkedList)
|
||||
list.Init()
|
||||
list.addAtHead(100)
|
||||
list.addAtTail(242)
|
||||
list.addAtTail(777)
|
||||
list.addAtIndex(1, 99999)
|
||||
list.printLinkedList()
|
||||
}
|
||||
|
||||
// 单链表写法 //
|
||||
|
||||
type SingleNode struct {
|
||||
Val int
|
||||
Next *SingleNode
|
||||
}
|
||||
|
||||
type SingleLinkedList struct {
|
||||
dummyHead *SingleNode
|
||||
Size int
|
||||
}
|
||||
|
||||
// 初始化链表
|
||||
func (list *SingleLinkedList) Init() *SingleLinkedList {
|
||||
list.Size = 0
|
||||
list.dummyHead = new(SingleNode)
|
||||
return list
|
||||
}
|
||||
|
||||
// 获取第index个节点数值
|
||||
func (list *SingleLinkedList) get(index int) int {
|
||||
if list != nil || index < 0 || index > list.Size {
|
||||
return -1
|
||||
}
|
||||
// 让cur等于真正头节点
|
||||
cur := list.dummyHead.Next
|
||||
for i := 0; i < index; i++ {
|
||||
cur = cur.Next
|
||||
}
|
||||
return cur.Val
|
||||
}
|
||||
|
||||
// 在链表最前面插入一个节点
|
||||
func (list *SingleLinkedList) addAtHead(val int) {
|
||||
// 以下两行代码可用一行代替
|
||||
// newNode := new(SingleNode)
|
||||
// newNode.Val = val
|
||||
newNode := &SingleNode{Val: val}
|
||||
|
||||
newNode.Next = list.dummyHead.Next
|
||||
list.dummyHead.Next = newNode
|
||||
list.Size++
|
||||
}
|
||||
|
||||
// 在链表最后面插入一个节点
|
||||
func (list *SingleLinkedList) addAtTail(val int) {
|
||||
newNode := &SingleNode{Val: val}
|
||||
cur := list.dummyHead
|
||||
for cur.Next != nil {
|
||||
cur = cur.Next
|
||||
}
|
||||
cur.Next = newNode
|
||||
list.Size++
|
||||
}
|
||||
|
||||
// 打印链表
|
||||
func (list *SingleLinkedList) printLinkedList() {
|
||||
cur := list.dummyHead
|
||||
for cur.Next != nil {
|
||||
fmt.Println(cur.Next.Val)
|
||||
cur = cur.Next
|
||||
}
|
||||
}
|
||||
|
||||
// 在第index个节点之前插入新节点
|
||||
func (list *SingleLinkedList) addAtIndex(index int, val int) {
|
||||
if index < 0 {
|
||||
index = 0
|
||||
} else if index > list.Size {
|
||||
return
|
||||
}
|
||||
|
||||
newNode := &SingleNode{Val: val}
|
||||
cur := list.dummyHead //用虚拟头节点不用考虑在头部插入的情况
|
||||
for i := 0; i < index; i++ {
|
||||
cur = cur.Next
|
||||
}
|
||||
newNode.Next = cur.Next
|
||||
cur.Next = newNode
|
||||
list.Size++
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
```go
|
||||
//循环双链表
|
||||
type MyLinkedList struct {
|
||||
|
Reference in New Issue
Block a user