倪春恩的博客
【转载】设计模式:解释器模式 【转载】设计模式:解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 意图:给定一个语言,定义它的
2023-06-14
offer2-71 offer2-71
给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。 例如,对于 w = [1, 3],挑选下标 0 的
2023-06-14
offer2-70 offer2-70
给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 示例 1: 输入: nums = [1,1,2
2023-06-13
offer2-69 offer2-69
符合下列属性的数组 arr 称为 山峰数组(山脉数组) : arr.length >= 3存在 i(0 < i < arr.length - 1)使得:arr[0] < arr[1] < … arr[i-1]
2023-06-12
offer2-68 offer2-68
给定一个排序的整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入
2023-06-11
offer2-67 offer2-67
给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。 示例 1: 输入:nums = [3,10,5,25,2,8] 输出:28 解释:最大运算结果是 5 X
2023-06-09
offer2-66 offer2-66
实现一个 MapSum 类,支持两个方法,insert 和 sum: MapSum() 初始化 MapSum 对象 void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整
2023-06-08
【转载】设计模式:备忘录模式 【转载】设计模式:备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 主要解决:所谓备忘录模式就是在不破
2023-06-07
offer2-65 offer2-65
单词数组 words 的 有效编码 由任意助记字符串 s 和下标数组 indices 组成,且满足: words.length == indices.length 助记字符串 s 以 '#' 字符结尾 对于每个下标 indices[i]
2023-06-07
offer2-64 offer2-64
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于已构建的神奇字典中。 实现 MagicDictionary 类: Magi
2023-06-06
25 / 50