LeetCode1749:任意子数组和的绝对值的最大值
题目描述: 方法1:动态规划,分别求最大子数组和和最小子数组和,他们的绝对值中最大的一个即为题目要求 class Solution { public: int maxAbsoluteSum(vector<int>& nums) { int p = max(0,nums[0])
题目描述: 方法1:动态规划,分别求最大子数组和和最小子数组和,他们的绝对值中最大的一个即为题目要求 class Solution { public: int maxAbsoluteSum(vector<int>& nums) { int p = max(0,nums[0])
题目描述: 方法1:动态规划,题目类似于最大子数组和,本题中p表示以nums[i]结尾的最大开销的子数组,val哈希表存储每个字母的开销 m是最大开销的子数组 class Solution { public: int maximumCostSubstring(string s, string
题目描述:给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中 「优美子数组」 的数目。 方法1:哈希表,i次循环处理每一个数,用一个数记录第i个数与第i个数之前奇数数字个数,用一个哈希表存储第i个数之前所有可
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 方法1:哈希表,key为nums[i],value为i,一边遍历一边
题目描述:给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 方法1:前缀和+哈希表,i次循环处理每一个数,用一个数记录第i个数的前缀和,用一个哈希表存储第i个数之前所有数的不同前缀和以及其出现的次数,只要(第i个数的
题目描述:一条街道上共有 n * 2 个地块 ,街道的两侧各有 n 个地块。每一边的地块都按从 1 到 n 编号。每个地块上都可以放置一所房子。现要求街道同一侧不能存在两所房子相邻的情况,请你计算并返回放置房屋的方式数目。由于答案可能很大,需要对 109 + 7 取余后再返回。 方法1:动态规划dp
题目描述:给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 方
题目描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 方法1:动态规划,第一圈和最后一圈不能同时偷,
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。 方法1:二分查找 返回数组中第一个大于等于target的位置,Solution类中的tar方法 注:传统的二分查
题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 方法1:动态规划,下面的代码写成了求最长连续递增子序列(dp数组设为了以i结尾的最长连续递增子序列),错误 class Solution { public: int lengthOfLIS(vector<int>&