mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
@ -250,23 +250,23 @@ public int searchInsert(int[] nums, int target) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Golang:
|
### Golang
|
||||||
|
|
||||||
```golang
|
```go
|
||||||
// 第一种二分法
|
// 第一种二分法
|
||||||
func searchInsert(nums []int, target int) int {
|
func searchInsert(nums []int, target int) int {
|
||||||
l, r := 0, len(nums) - 1
|
left, right := 0, len(nums)-1
|
||||||
for l <= r{
|
for left <= right {
|
||||||
m := l + (r - l)/2
|
mid := left + (right-left)/2
|
||||||
if nums[m] == target{
|
if nums[mid] == target {
|
||||||
return m
|
return mid
|
||||||
}else if nums[m] > target{
|
} else if nums[mid] > target {
|
||||||
r = m - 1
|
right = mid - 1
|
||||||
}else{
|
} else {
|
||||||
l = m + 1
|
left = mid + 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r + 1
|
return len(nums)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -300,6 +300,61 @@ function generateMatrix(n: number): number[][] {
|
|||||||
|
|
||||||
Go:
|
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
|
```go
|
||||||
func generateMatrix(n int) [][]int {
|
func generateMatrix(n int) [][]int {
|
||||||
top, bottom := 0, n-1
|
top, bottom := 0, n-1
|
||||||
|
@ -652,6 +652,106 @@ class MyLinkedList:
|
|||||||
|
|
||||||
Go:
|
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
|
```go
|
||||||
//循环双链表
|
//循环双链表
|
||||||
type MyLinkedList struct {
|
type MyLinkedList struct {
|
||||||
|
Reference in New Issue
Block a user