Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 1014. 最佳观光组合
题目简介:给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。 一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。 返回一对观光景点能取得的最高分。 示例: 123输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11 提示: 2 <= A.length <= 50000 1 <= A[i] <= 1000 思路:利用动态规...
Leetcode 297. 二叉树的序列化与反序列化
题目简介:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 示例: 12345678你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,null,null,4,5]" 提示: 这与 LeetCode 目...
Leetcode 14. 最长公共前缀
题目简介:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 12输入: ["flower","flow","flight"]输出: "fl" 示例 2: 123输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 思路:首先将数组以字符串长度进行排序,因为最长的公共前缀最多也...
Leetcode 1300. 转变数组后最接近目标值的数组和
题目简介:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。 如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。 请注意,答案不一定是 arr 中的数字。 示例 1: 123输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近 target 的方案。 示例 2: 12输入:arr = [2,3,5]...
Leetcode 5437. 不同整数的最少数目
题目简介:给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。 示例 1: 123输入:arr = [5,5,4], k = 1输出:1解释:移除 1 个 4 ,数组中只剩下 5 一种整数。 示例 2: 123输入:arr = [4,3,1,1,3,3,2], k = 3输出:2解释:先移除 4、2 ,然后再移除两个 1 中的任意 1 个或者三个 3 中的任意 1 个,最后剩下 1 和 3 两种整数。 提示: 1 <= arr.length <= 10^5 1 <= arr[i] <= 10^9 ...
Leetcode 70. 爬楼梯
题目简介:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 12345输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶 示例 2: 123456输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶 思路:经典动态规划,dp[i] = dp[i - 1] + dp[i - 2],初始化dp[0], dp[1], dp[2]即可。 代码如下:123...
Leetcode 15. 三数之和
题目简介:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例: 1234567给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]] 思路:首先将数组进行从小到大的排序,然后遍历数组,将每次遍历到的数字作为固定数字,并设置双指针,left = i + 1,right = nums.size() - 1。(即指针的范围在当前遍历数字之后) ...
Leetcode 739. 每日温度
题目简介:请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。 提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。 思路:利用单调栈,若栈为空,则将气温的下标直接入栈。 若栈不空,则与栈顶元素进行比较,若比栈顶元素大,则将栈顶元素逐渐出...
Leetcode 9. 回文数
题目简介:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 12输入: 121输出: true 示例 2: 123输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 123输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 思路:由于不能将整数转换为字符串,所以尝试倒置原数,并与原数进行比较。 每次将x % 10,便得到了x的最后一位数字,然后reverse_num...
Leetcode 面试题46. 把数字翻译成字符串
题目简介:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 123输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi" 提示: 0 <= num < $2^{31}$ 思路:使用动态规划,dp[...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili