随笔分类 - 每日算法
1
摘要:1014.最佳观光组合 难度[中等] 给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。 一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是
阅读全文
摘要:918.环形子数组的最大和 难度[中等] 给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。 在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length
阅读全文
摘要:53.最大子序和 难度[简单] 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2:
阅读全文
摘要:70.爬楼梯 难度: 【简单】 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例
阅读全文
摘要:509.斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2), 其中 n > 1 给你 n ,请计算 F(n
阅读全文
摘要:Hash 存在重复元素 II 题目 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums[i]=nums[j],并且 i 和 j 的差的 绝对值 至多为 k。 示例 1: 输入: nums = [1,2,3,1], k = 3 输出: true 示例 2: 输
阅读全文
摘要:位运算技巧 x&(-x) 获取二进制位中最后一个1的位置 x&(x-1) 把二进制位中的最低位的1置成0 题目 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的
阅读全文
摘要:什么是位运算 现代计算机中所有的数据都是以二进制的形式存储在计算机中的存储设置中,即0、1两种形态,对计算机的各个操作对应的是二进制数据的各种运算。 运算符 符号 描述 运算规则 & 与,两个位都为1时,结果才为1 1&1=1 1&0=0 0&0=0 | 或,两个位都为0时,结果才为0 1|1=1
阅读全文
摘要:题目描述 这是 LeetCode 上的 74.搜索二维矩阵, 难度为 【中等】 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入:matrix = [[1,3,5,7
阅读全文
摘要:模板 left,right=1,n while left<=right: mid=left+(right-left)//2 if 条件: right=mid+1 else: left=mid-1 定义左右边界 左边界小于右边届时进入循环体 取中间数,使用left+(right-left)//2是防止
阅读全文
摘要:模板 left,right=1,n while left<=right: mid=left+(right-left)//2 if 条件: right=mid+1 else: left=mid-1 定义左右边界 左边界小于右边届时进入循环体 取中间数,使用left+(right-left)//2是防止
阅读全文
摘要:题目描述 这是 LeetCode 上的 剑指 Offer 38. 字符串的排列, 难度为 【中】 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例 1: 输入:s = "abc" 输出:["abc","acb","bac","bca"
阅读全文
摘要:题目描述 这是 LeetCode 上的 632.最小区间, 难度为 【困难】 你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c
阅读全文
摘要:题目描述 这是 LeetCode 上的 76.最小覆盖子串, 难度为 【困难】 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少
阅读全文
摘要:题目描述 这是 LeetCode 上的 239. 滑动窗口最大值, 难度为 【困难】 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 1: 输入:nums
阅读全文
摘要:题目描述 这是 LeetCode 上的 209. 长度最小的子数组, 难度为 【中】 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回
阅读全文
摘要:题目描述 这是 LeetCode 上的 3. 无重复字符的最长子串 难度为 【中等】 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:
阅读全文
摘要:题目描述 这是 LeetCode 上的 220. 存在重复元素 III, 难度为 【中等】 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。
阅读全文
摘要:题目描述 这是 LeetCode 上的 219. 存在重复元素 II, 难度为 【简单】 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。 示例 1: 输入: nums = [1
阅读全文
摘要:题目描述 这是 LeetCode 上的 209. 长度最小的子数组, 难度为 【困难】 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返
阅读全文
1