LeetCode
江南路漫
这个作者很懒,什么都没留下…
展开
-
Leetcode 35.搜索插入位置 二分
题目链接思路:是常规的二分法, 需要注意的是,当数字不存在的时候,需要返回插入该数进序列并保持有序的位置,即返回的是最后一个小于查找数target的位置。二分查找最后结束的位置,即退出循环时的左边界或者右边界+1。参考代码:class Solution {public: int searchInsert(vector<int>& nums, int target) { int left = 0, right = nums.size()-1, mid;原创 2022-04-04 00:22:14 · 344 阅读 · 0 评论 -
Leetcode 34.在排序数组中查找元素的第一个和最后一个位置 二分
第一种方法,比较简单,左边界查找使用C++的upper_bound()函数,右边界从左边界开始往下查找。参考代码:class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> res; int len = nums.size(); int left = lower_bound(nu原创 2022-04-03 14:25:44 · 497 阅读 · 0 评论 -
Leetcode 1094.拼车 差分
思路:这道题有很多种解法,刚好最近在学差分,就用差分做吧。首先是初始没有乘客,差分diff数组各项为0,不用求差构造差分数组了。接着是每一次乘车方案,起点站需要加上乘客数,终点站需要减去乘客数。注意:乘车区间是前闭后开的,因为终点站乘客下车了以后还可以继续拉客。(这里坑了我一会儿)参考代码:class Solution {public: bool carPooling(vector<vector<int>>& trips, int capacity) {原创 2022-04-03 00:32:31 · 750 阅读 · 0 评论 -
Leetcode 1109.航班预定统计 差分
思路:这道题假如要用暴力的方法,是过不去的。要使用差分的思想,创建一个差数组。因为本道题初始的座位数是0,直接建立一个全0数组即可。参考代码:class Solution {public: vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) { vector<int> v; for(int i = 0;i <= n原创 2022-04-02 21:11:42 · 566 阅读 · 0 评论 -
Leetcode动态规划 不同路径
A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked ‘Finish’ in the dia原创 2021-08-26 15:02:12 · 86 阅读 · 0 评论 -
Leetcode贪心 K次取反后最大化的数组和
Given an integer array nums and an integer k, modify the array in the following way:choose an index i and replace nums[i] with -nums[i].You should apply this process exactly k times. You may choose the same index i multiple times.Return the largest poss原创 2021-08-24 21:53:34 · 74 阅读 · 0 评论 -
Leetcode贪心 摆动序列
A wiggle sequence is a sequence where the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with one element and a sequence with two原创 2021-08-23 09:26:08 · 82 阅读 · 0 评论 -
Leetcode贪心 验证回文字符串
Given a string s, return true if the s can be palindrome after deleting at most one character from it.思路用头尾指针遍历原字符串,但碰到所指不相同时,需要退出循环记录此书指针的位置。分别去除两个指针上的内容,查看删除一个字符后的字符串是否为回文串。代码class Solution {public: bool validPalindrome(string s) { int l原创 2021-08-22 13:14:33 · 83 阅读 · 0 评论 -
Leetcode贪心 种花问题
You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in adjacent plots.Given an integer array flowerbed containing 0’s and 1’s, where 0 means empty and 1 means not empty, and an integer n,原创 2021-08-22 09:01:40 · 94 阅读 · 0 评论 -
Leetcode动态规划 等差数列划分
An integer array is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.For example, [1,3,5,7,9], [7,7,7,7], and [3,-1,-5,-9] are arithmetic sequences.Given an integer array n原创 2021-08-21 10:09:38 · 89 阅读 · 0 评论 -
Leetcode贪心 分发饼干
Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie.Each child i has a greed factor g[i], which is the minimum size of a cookie that the child will be content with; and each cook原创 2021-08-20 08:52:57 · 91 阅读 · 0 评论 -
Leetcode动态规划 接雨水
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.Input: height = [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6Explanation: The above elevation map (black section) is rep原创 2021-08-19 13:22:32 · 148 阅读 · 0 评论 -
LeetCode贪心 加油站
There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i + 1)th station. You begin the journey原创 2021-08-16 16:54:12 · 66 阅读 · 0 评论 -
LeetCode动态规划 分割等和子集
Given a non-empty array nums containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.代码class Solution {public: bool canPartition(vector<int>& nums) {原创 2021-08-15 22:35:21 · 180 阅读 · 0 评论 -
LeetCode动态规划 杨辉三角
Given an integer numRows, return the first numRows of Pascal’s triangle.In Pascal’s triangle, each number is the sum of the two numbers directly above it as shown:前几天做的动态规划题好难呜呜,做道水题找回自信~状态转移方程triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]边界条件原创 2021-08-15 17:13:45 · 49 阅读 · 0 评论 -
LeetCode贪心 最长回文串
Given a string s which consists of lowercase or uppercase letters, return the length of the longest palindrome that can be built with those letters.Letters are case sensitive, for example, “Aa” is not considered a palindrome here.思路首先学习一个新单词,palindrome回原创 2021-08-05 15:01:07 · 296 阅读 · 0 评论 -
LeetCode贪心 数组拆分I
Given an integer array nums of 2n integers, group these integers into n pairs (a1, b1), (a2, b2), …, (an, bn) such that the sum of min(ai, bi) for all i is maximized. Return the maximized sum.思路这道题要使得各最小值相加最小,就要使得的每一组中的两数差的绝对值最小。假如一对数字中的差很大,会导致这对数字中较大的数字原创 2021-08-05 14:24:22 · 121 阅读 · 0 评论 -
LeetCode动态规划+贪心 买卖股票的最佳时机含手续费
You are given an array prices where prices[i] is the price of a given stock on the ith day, and an integer fee representing a transaction fee.Find the maximum profit you can achieve. You may complete as many transactions as you like, but you need to pay t原创 2021-08-05 13:59:35 · 172 阅读 · 0 评论 -
LeetCode动态规划 最佳买卖股票时机含冷冻期
You are given an array prices where prices[i] is the price of a given stock on the ith day.Find the maximum profit you can achieve. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times) with the f原创 2021-08-02 09:43:52 · 125 阅读 · 0 评论 -
LeetCode哈希表 两数之和
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.You may assume that each input would have exactly one solution, and you may not use the same element twice.You can return the answer原创 2021-08-01 17:18:12 · 165 阅读 · 0 评论 -
LeetCode数据库 组合两个表
表1: Person±------------±--------+| 列名 | 类型 |±------------±--------+| PersonId | int || FirstName | varchar || LastName | varchar |±------------±--------+PersonId 是上表主键表2: Address±------------±--------+| 列名 | 类型原创 2021-08-01 14:30:00 · 78 阅读 · 0 评论 -
LeetCode动态规划+贪心 买卖股票的最佳时机II
You are given an array prices where prices[i] is the price of a given stock on the ith day.Find the maximum profit you can achieve. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times).Note: You原创 2021-07-31 09:51:53 · 190 阅读 · 0 评论 -
LeetCode动态规划 买卖股票的最佳时机
You are given an array prices where prices[i] is the price of a given stock on the ith day.You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.Return the maximum profit原创 2021-07-31 09:23:17 · 122 阅读 · 0 评论 -
LeetCode动态规划 最佳观光组合
You are given an integer array values where values[i] represents the value of the ith sightseeing spot. Two sightseeing spots i and j have a distance j - i between them.The score of a pair (i < j) of sightseeing spots is values[i] + values[j] + i - j:原创 2021-07-30 22:22:03 · 140 阅读 · 0 评论 -
LeetCode循环剪枝 最佳观光组合
You are given an integer array values where values[i] represents the value of the ith sightseeing spot. Two sightseeing spots i and j have a distance j - i between them.The score of a pair (i < j) of sightseeing spots is values[i] + values[j] + i - j:原创 2021-07-30 15:03:00 · 129 阅读 · 0 评论 -
LeetCode动态规划 乘积为正数的最长子数组长度
Given an array of integers nums, find the maximum length of a subarray where the product of all its elements is positive.A subarray of an array is a consecutive sequence of zero or more values taken out of that array.Return the maximum length of a subarr原创 2021-07-29 14:51:42 · 154 阅读 · 0 评论 -
LeetCode动态规划 乘积最大子数组
Given an integer array nums, find a contiguous non-empty subarray within the array that has the largest product, and return the product.It is guaranteed that the answer will fit in a 32-bit integer.A subarray is a contiguous subsequence of the array.动态转原创 2021-07-29 11:00:26 · 68 阅读 · 0 评论 -
LeetCode动态规划 环形子数组的最大和
给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。思路本道题需要分类成两种情况,题目答案为以下两种情况的较大值。1.最大子区间在序列的中间这种情况是常规的最长子序列做法。状态转移方程dp[i] = max(nums[i], dp[i-1] + nums[i])边界条件dp[0] = nums[0]2.最大子区间被分割成两部分(即头尾各一部分)处理分段区间比较麻烦,当遇到最大最小问题的时候,可以想办法将原创 2021-07-29 09:00:24 · 427 阅读 · 0 评论 -
LeetCode动态规划 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。ps: 清华大学912曾经考过。状态转移方程dp[i] = max(nums[i], dp[i-1] + nums[i])边界条件dp[0] = nums[0]代码class Solution {public: int maxSubArray(vector<int>& nums) { int dp[30005] = {0}; int原创 2021-07-28 20:06:39 · 83 阅读 · 0 评论 -
LeetCode动态规划 跳跃游戏II
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。这道题用动态规划做,时间复杂度很高但毕竟在学动态规划嘛,那就不用贪心算法优化了。状态转移方程dp[i+j] = min(dp[i+j], dp[i] + 1)边界条件dp[0] = 0class Solution {public: int jump(vector<int&g原创 2021-07-19 11:04:47 · 211 阅读 · 2 评论 -
LeetCode动态规划 删除并获得点数
You are given an integer array nums. You want to maximize the number of points you get by performing the following operation any number of times:Pick any nums[i] and delete it to earn nums[i] points. Afterwards, you must delete every element equal to nums原创 2021-07-16 22:03:00 · 126 阅读 · 2 评论 -
LeetCode动态规划 打家劫舍II
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, adjacent houses原创 2021-07-16 16:05:55 · 95 阅读 · 0 评论 -
LeetCode动态规划 斐波那契数
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。之前基本没有碰过动态规划的题,这个暑假开始猛攻动态规划,先从简单的斐波那契数列开始吧~这个题的边界和状态转移方程题目都给了,挺简单的。倒是发现了可以秒杀此题的公式,公式如下:class Solution {pu原创 2021-07-15 11:48:42 · 87 阅读 · 0 评论 -
LeetCode动态规划 使用最小花费爬楼梯
数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。状态转移方程dp[i] = min(dp[i-1], dp[i-2]) + dp[i];边界条件dp[0] = cost[0], dp[1] = cost[1]这题总感觉题目描述得不太行,原创 2021-07-15 12:44:31 · 170 阅读 · 0 评论