可以引出一个需求设计:记录搜索输入框的历史(https://www.cnblogs.com/zhangjianghao/p/16389820.html) 题目的意图,待解决的问题 分析可能要用的数据结构或算法 分析限制条件的影响,corner case
给你一个仅包含小写英文字母和 '?' 字符的字符串 s,请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 '?' 字符。 题目测试用例保证 除 '?' 字符 之外,不存在连续重复的字符。 在完成所有转换(可能无需转换)后返回最终的字符串。
给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat = [[1,2,3], [4,5,6], [7,8,9]] 输出:25 解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25 请注意,元素 mat[1][1]
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 1. 暴力递归 由于*匹配零个或多个前面元素,所以遍历是有方向的,从后往前递归判断,使问题规模缩小 class Solution { public: bool
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 1. 辅助空间暴力法 将两数组合并,分奇偶取中位数 class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m =
给你一个下标从 0 开始长度为 n 的整数数组 nums 。 下标 i 处的 平均差 指的是 nums 中 前 i + 1 个元素平均值和 后 n - i - 1 个元素平均值的 绝对差 。两个平均值都需要 向下取整 到最近的整数。 请你返回产生 最小平均差 的下标。如果有多个下标最小平均差相等,请你返回 最小
给你一个表示某个正整数的字符串 number 和一个字符 digit 。 从 number 中 恰好 移除 一个 等于 digit 的字符后,找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit 在 number 中出现至少一次。 示例 1: 输入:number = "123", digit = "3" 输出:"12" 解释:"123"
一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目: 子字符串长度为 k 。 子字符串能整除 num 。 给你整数 num 和 k ,请你返回 num 的 k 美丽值。 注意: 允许有 前缀 0 。 0 不能整除任何值。 一个 子字符串 是一个字符串里的连续一段字符序列。 示例 1: 输入
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 1. 暴力法 从后往前遍历,碰到0将所有元素后移,即再从后往前遍历一次 class Solution { public: void duplicateZeros(vector<int>& arr) { int n = arr.size(); f
如果一个密码满足以下所有条件,我们称它是一个 强 密码: 它有至少 8 个字符。 至少包含 一个小写英文 字母。 至少包含 一个大写英文 字母。 至少包含 一个数字 。 至少包含 一个特殊字符 。特殊字符为:"!@#$%^&*()-+" 中的一个。 它 不 包含 2 个连续相同的字符(比方说 "aab" 不符
一、题目大意 标签: 动态规划 https://leetcode.cn/problems/house-robber 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表
语法 全局using你再也不用每个类里都引用命名空间了 项目的csproj文件中加入 <ItemGroup> <PackageReference Include="LeetCode.CommunityToolKit" Version="4.0.3" /> <Using Include="LeetCode.CommunityToolKit.Models;" /> <Using
链接:LeetCode [Leetcode]2264. 字符串中最大的 3 位相同数字 给你一个字符串 num ,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 : 该整数是 num 的一个长度为 3 的 子字符串 。 该整数由唯一一个数字重复 3 次组成。 以字符串形式返回 最大的优质整
原题链接在这里:https://leetcode.com/problems/swapping-nodes-in-a-linked-list/ 题目: You are given the head of a linked list, and an integer k. Return the head of the linked list after swapping the values of the kth node from the beginning and the kth
给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。
搜索与回溯算法(中等) 剑指 Offer 34. 二叉树中和为某一值的路径 先序遍历+路径记录 记录路径时若直接执行 res.append(path) ,则是将 path 对象加入了 res ;后续 path 改变时, res 中的 path 对象也会随之改变。 正确做法:res.append(list(path)) ,相当于复制了一个 path 并加入到 res
LeetCode 37. Sudoku Solver (解数独) 题目 链接 https://leetcode.cn/problems/sudoku-solver/ 问题描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实
LeetCode 90. Subsets II (子集 II) 题目 链接 https://leetcode.cn/problems/subsets-ii/ 问题描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 输入:nums = [1,2,2]
LeetCode 78. Subsets (子集) 题目 链接 https://leetcode.cn/problems/subsets/ 问题描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 输入:nums = [1,2,3] 输出:[[],[1],[2],[
一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 。 比方说,x = 7 ,二进制表示为 111 ,我们可以选择任意一个位(包含没有显示的前导 0 )并进行翻转。比方说我们可以翻转最右边一位得到 110 ,或者翻转右边起第二位得到 101 ,或者翻转右边起第
给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个谷的一部分。对于相邻下标 i 和 j ,如果 nums[i] == nums[j] , 则
给你一个整数数组 nums ,它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对,请你返回 true ,否则返回 false 。 示例 1: 输入:nums = [3,2,3,2,2,2] 输出:true 解释: nums 中总共有 6
class Solution { public: int heightChecker(vector<int>& heights) { vector<int> expected(heights); int t=expected.size(),ans=0; sort(expected.begin(),expected.end()); for (int i=0;i<t;i++)
1. 静态区间合并 先按左边界排序,再两两比较合并 class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { if (intervals.size() == 0) return {}; sort(intervals.begin(), intervals.end());//按左边界排序
整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经