leetcode 455.分发饼干
455. 分发饼干 - 力扣(Leetcode) https://leiqicn.gitee.io/ 欢迎关注我的博客,定时更新golang 刷题笔记 贪心的策略: 贪心算法一般分为如下四步: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 排序,遍历饼干,child胃口初始化idx=0 ,res =0 ;如果没有越界并且饼干大于等于胃口,则childIdx ++;res++ 12345678910111213141516171819func findContentChildren(g []int, s []int) int { // g 小孩胃口 s 饼干 从大到小排序 排序,并给胃口初始化赋值 sort.Ints(g) sort.Ints(s) j := 0 res := 0 // 用小饼干 来满足最小的胃口 for i := 0; i < len(s); i++ { // 判断越界 饼干大于胃口 if j...
网站无法访问categories?
在package.json中没有放 下边的hexo-generator-category,导致无法生成对应的文件。 可以显示啦
leetcode 706. 设计哈希映射 Golang
706. 设计哈希映射 - 力扣(Leetcode)使用了go 语言的list.List (双向列表),具体如何使用请看文章:Go语言-list.List 使用结构体(非指针)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960// 链地址法var base = 769// base := 769type entry struct { k int v int}type MyHashMap struct { hashMaps []list.List}// hash集合可以使用数组链表;func Constructor() MyHashMap { return MyHashMap{make([]list.List, base)}}// func (this *MyHashMap) hash(key int, value...
leetcode 705. 设计哈希集合
705. 设计哈希集合 - 力扣(Leetcode) 1234567891011121314151617181920212223242526272829303132333435363738394041const base = 769 // 哈希表的长度 质数type MyHashSet struct { data []list.List // 使用链表储存冲突元素}func Constructor() MyHashSet { // 构造函数,返回一个空的哈希集合 return MyHashSet{make([]list.List, base)}}// 哈希函数:对键值取模得到哈希值func (s *MyHashSet) hash(key int) int { return key % base}func (s *MyHashSet) Add(key int) { // 向哈希集合中添加元素 if !s.Contains(key) { //...
leetcode 1396.设计地铁系统
1396. 设计地铁系统 - 力扣(Leetcode) 设计题: 设计数据结构 user startTime int endTime int startStationName string endStatationName string UndergroundSystem userMap map[int]*user pathMap map[string][]int // 存放对应路程的用时,用于计算平均时间 注意点:go语言针对结构体包含指针的,需要在具体实现前初始化。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364type user struct { id int startTime int endTime int startStationName string endStatationName string}type...
leetcode 设计题 Constructor构建
在面向对象编程中,构造函数通常用于创建新对象并初始化其属性。对于 LeetCode 样例题目 “Design Parking System” 中的 ParkingSystem 结构体,可以这样编写 Constructor 方法: 123456789type ParkingSystem struct { carNums map[int]int // 记录每种停车位的数量}func Constructor(big int, medium int, small int) ParkingSystem { return ParkingSystem{ carNums: map[int]int{1: big, 2: medium, 3: small}, // 初始化 carNums 映射 }} 在这个实现中,我们使用传递给 Constructor 方法的三个整数参数来初始化 ParkingSystem 结构体的属性。具体而言,我们使用 map[int]int 类型的...
Go语言-copy
在 Go 语言中,copy 函数可以用于将一个切片(slice)的元素复制到另一个切片中。它的定义如下: 1func copy(dst, src []Type) int 其中 dst 是目标切片,src 是源切片,Type 表示元素类型。函数返回值是复制的元素个数,即 len(src) 和 len(dst) 中较小的那个。 使用 copy 函数删除数组或切片中的元素,需要用到 append 函数和 copy 函数一起操作。具体步骤如下: 123456789// 定义一个包含元素的数组a := [5]int{1, 2, 3, 4, 5}// 定义要删除的元素下标index := 2// 利用 append 函数和 copy 函数删除指定下标的元素copy(a[index:], a[index+1:])a = a[:len(a)-1]// 打印删除后的数组fmt.Println(a) // 输出 [1 2 4 5] 上述代码中,首先定义一个包含 5 个元素的整型数组 a 和要删除的元素下标 index。然后调用 copy 函数将第 index+1...
Go语言-byte和rune 有什么区别 byte rune 转为int
在 Go 语言中,byte 和 rune 都是用来表示字符类型的数据类型。 byte 是 uint8 的别名,在 Go 中通常用于表示 ASCII 字符集中的一个字节。rune 是 int32 的别名,在 Go 中通常用于表示 Unicode 字符集中的一个代码点。因此,对于 ASCII 字符来说,byte 和 rune 的值是相同的,但是对于大部分 Unicode 字符来说,它们是不同的。 将 byte 或 rune 转换为 int 可以使用类型转换操作符: 123456b := byte('0')i := int(b) - int('0') // 将 byte '0' 转换为 int 0// 上边可以简写为i := b - '0'r := rune('中')i := int(r) // 将 rune '中' 转换为 int 类型(其实是它的 Unicode 码点) 将 int 转换为 byte 或 rune...
Leetcode 200.岛屿数量
200. 岛屿数量 - 力扣(Leetcode) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051// 1 岛屿,0 海水, 见到岛屿则使用dfs 淹了这个所有1相连的岛屿,res++func numIslands(grid [][]byte) int { res := 0 r := len(grid) c := len(grid[0]) visited := make([][]byte, r) for i := 0; i < r; i++ { visited[i] = make([]byte, c) } // 遍历二维slice for i := 0; i < r; i++ { for j := 0; j < c; j++ { // 每个位置 if grid[i][j] == '1' { ...
结构体指针作为map key 结构体值改变对map有影响吗
最近偶然用到了结构体指针作为map key 的场景。当时有点不太确定:go 语言使用map 时使用指针p作为key, 那修改指针p的值之后。这map 还包含p 吗?接下来让我们一起看看: 当将指针作为 Map 的 Key 时,实际上是把指针的值作为键来进行插入和查找操作。因此,如果修改了该指针所指向的变量的值,那么并不会影响已经添加到 Map 中的键。因为这个指针仍然具有相同的值,所以它可以被用作一个标识符来检索和操作存储在Map中的数据 例如,以下代码定义了一个map[*int]string类型的映射,将指针p用作key来插入和索引数据: 123456789101112131415161718package mainimport "fmt"func main() { m := make(map[*int]string) x := 1 p := &x m[p] = "A" // 添加数据 fmt.Println(m) // map[0xc000016088:A] *p = 2 //...