0%

https://leetcode.cn/problems/3sum/

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

工作中遇到一个问题,结构体包含接口类型的成员时,在反序列化的时候会报错。

// Task 接口类型
type Task interface {
    Exec() error
}

// TaskA Task接口的实现类A
type TaskA struct {
    A string `json:"a"`
}

func (ta *TaskA) Exec() error {
    fmt.Println("TaskA Exec")
    return nil
}

// TaskB Task接口的实现类B
type TaskB struct {
    B string `json:"b"`
}

func (tb *TaskB) Exec() error {
    fmt.Println("TaskB Exec")
    return nil
}

// MixedStruct 反序列化目标结构体
type MixedStruct struct {
    Id   uint64 `json:"id"`
    Task Task   `json:"task"`
}

https://leetcode.cn/problems/lru-cache

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。

实现 LRUCache 类:

  • LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
  • int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1
  • void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。 函数 getput 必须以 O(1) 的平均时间复杂度运行。