做网络推网站推广的目的,静态网页设计素材,wordpress百度,国内出色的网站建设公司又是7分选手#xff0c;好好复盘#xff01; 
第一题#xff08;签到题#xff09; 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target #xff0c;请你返回满足 0  i  j  n 且 nums[i]  nums[j]  target 的下标对 (i, j) 的数目。 示例 …又是7分选手好好复盘 
第一题签到题 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target 请你返回满足 0  i  j  n 且 nums[i]  nums[j]  target 的下标对 (i, j) 的数目。 示例 1 输入nums  [-1,1,2,3,1], target  2 输出3 解释总共有 3 个下标对满足题目描述 (0, 1) 0  1 且 nums[0]  nums[1]  0  target(0, 2) 0  2 且 nums[0]  nums[2]  1  target(0, 4) 0  4 且 nums[0]  nums[4]  0  target 注意 (0, 3) 不计入答案因为 nums[0]  nums[3] 不是严格小于 target 。 示例 2 输入nums  [-6,2,5,-2,-7,-1,3], target  -2 输出10 解释总共有 10 个下标对满足题目描述(0, 1) 0  1 且 nums[0]  nums[1]  -4  target(0, 3) 0  3 且 nums[0]  nums[3]  -8  target(0, 4) 0  4 且 nums[0]  nums[4]  -13  target(0, 5) 0  5 且 nums[0]  nums[5]  -7  target(0, 6) 0  6 且 nums[0]  nums[6]  -3  target(1, 4) 1  4 且 nums[1]  nums[4]  -5  target(3, 4) 3  4 且 nums[3]  nums[4]  -9  target(3, 5) 3  5 且 nums[3]  nums[5]  -3  target(4, 5) 4  5 且 nums[4]  nums[5]  -8  target(4, 6) 4  6 且 nums[4]  nums[6]  -4  target 提示 1  nums.length  n  50 -50  nums[i], target  50 没什么好说的两层循环找到了元素对则计数器加1。 
class Solution(object):def countPairs(self, nums, target):count  0for i in range(0,len(nums)):for j in range(i1,len(nums)):if nums[i]  nums[j]target:count  count  1return count第二题双指针 给你一个下标从 0 开始的字符串 str1 和 str2 。 一次操作中你选择 str1 中的若干下标。对于选中的每一个下标 i 你将 str1[i] 循环 递增变成下一个字符。也就是说 ‘a’ 变成 ‘b’ ‘b’ 变成 ‘c’ 以此类推‘z’ 变成 ‘a’ 。 如果执行以上操作 至多一次 可以让 str2 成为 str1 的子序列请你返回 true 否则返回 false 。 注意一个字符串的子序列指的是从原字符串中删除一些可以一个字符也不删字符后剩下字符按照原本先后顺序组成的新字符串。 示例 1 输入str1  “abc”, str2  “ad” 输出true 解释选择 str1 中的下标 2 。 将 str1[2] 循环递增得到 ‘d’ 。 因此str1 变成 “abd” 且 str2 现在是一个子序列。所以返回 true 。 示例 2 输入str1  “zc”, str2  “ad” 输出true 解释选择 str1 中的下标 0 和 1 。 将 str1[0] 循环递增得到 ‘a’ 。 将 str1[1] 循环递增得到 ‘d’ 。 因此str1 变成 “ad” 且 str2 现在是一个子序列。所以返回 true 。 示例 3 输入str1  “ab”, str2  “d” 输出false 解释这个例子中没法在执行一次操作的前提下将 str2 变为 str1 的子序列。 所以返回 false 。 提示 1  str1.length  105 1  str2.length  105 str1 和 str2 只包含小写英文字母。 这道题我用了双指针的方法两个指针分别指向两个字符串的开头如果匹配或者加1后匹配则两个指针同时后移如果不匹配则匹配的字符串指针后移被匹配的字符串指针不动。最后退出的条件是有指针到达字符串终点。如果被匹配的字符串指针到了终点说明匹配成功反之如果匹配字符串指针到达终点而被匹配的字符串指针没有到达终结则说明匹配失败。 
class Solution(object):def canMakeSubsequence(self, str1, str2):i  0j  0while True:if jlen(str2):return Trueif j!len(str2) and ilen(str1):return Falseif str2[j]  a:if str1[i]  a or str1[i]  z:i  i  1j  j  1else:i  i  1else:if str1[i]str2[j] or ord(str1[i])1  ord(str2[j]):i  i  1j  j  1else:i  i  1            第三题没做出来 
比赛的时候看题以为是暴力可以求出来结果最后一直有10% 的样例不过。 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 从 0 到 n - 1 的数字被分为编号从 1 到 3 的三个组数字 i 属于组 nums[i] 。注意有的组可能是 空的 。 你可以执行以下操作任意次 选择数字 x 并改变它的组。更正式的你可以将 nums[x] 改为数字 1 到 3 中的任意一个。 你将按照以下过程构建一个新的数组 res  将每个组中的数字分别排序。 将组 1 2 和 3 中的元素 依次 连接以得到 res 。 如果得到的 res 是 非递减顺序的那么我们称数组 nums 是 美丽数组 。 请你返回将 nums 变为 美丽数组 需要的最少步数。 示例 1 输入nums  [2,1,3,2,1] 输出3 解释以下三步操作是最优方案 将 nums[0] 变为 1 。将 nums[2] 变为 1 。将 nums[3] 变为 1 。 执行以上操作后将每组中的数字排序组 1 为 [0,1,2,3,4] 组 2 和组 3 都为空。所以 res 等于 [0,1,2,3,4] 它是非递减顺序的。 三步操作是最少需要的步数。 示例 2 输入nums  [1,3,2,1,3,3] 输出2 解释以下两步操作是最优方案 将 nums[1] 变为 1 。将 nums[2] 变为 1 。 执行以上操作后将每组中的数字排序组 1 为 [0,1,2,3] 组 2 为空组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] 它是非递减顺序的。 两步操作是最少需要的步数。 示例 3 输入nums  [2,2,2,2,3,3] 输出0 解释不需要执行任何操作。 组 1 为空组 2 为 [0,1,2,3] 组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] 它是非递减顺序的。 提示 1  nums.length  100 1  nums[i]  3 比赛结束后看到题解有dp突然想起来可能是动态规划。 a代表结尾为1时所需要的最小步数b代表结尾为2时所需要的最小步数c代表结尾为3时所需要的最小步数。当num等于1时结尾为1不需要做出任何调整结尾为2则需要选取aa和bb的最小值并对num进行调整结尾为3则需要选取aa和bb和cc的最小值并对num进行调整。 
class Solution(object):def minimumOperations(self, nums):a  0b  0c  0 for num in nums:aa  abb  bcc  cif num1:a  aab  min(aa,bb)  1c  min(aa,bb,cc)  1elif num2:a  aa  1b  min(aa,bb)c  min(aa,bb,cc)  1elif num3:a  aa  1b  min(aa,bb)  1c  min(aa,bb,cc)return min(a,b,c)第四题没做出来 
第四题是最恶心了每次都有几个或者十几个样例卡你不是超时就是超内存hhhh。 给你正整数 low high 和 k 。 如果一个数满足以下两个条件那么它是 美丽的  偶数数位的数目与奇数数位的数目相同。 这个整数可以被 k 整除。 请你返回范围 [low, high] 中美丽整数的数目。 示例 1 输入low  10, high  20, k  3 输出2 解释给定范围中有 2 个美丽数字[12,18] 12 是美丽整数因为它有 1 个奇数数位和 1 个偶数数位而且可以被 k  3 整除。18 是美丽整数因为它有 1 个奇数数位和 1 个偶数数位而且可以被 k  3 整除。 以下是一些不是美丽整数的例子16 不是美丽整数因为它不能被 k  3 整除。15 不是美丽整数因为它的奇数数位和偶数数位的数目不相等。 给定范围内总共有 2 个美丽整数。 示例 2 输入low  1, high  10, k  1 输出1 解释给定范围中有 1 个美丽数字[10] 10 是美丽整数因为它有 1 个奇数数位和 1 个偶数数位而且可以被 k  1 整除。 给定范围内总共有 1 个美丽整数。 示例 3 输入low  5, high  5, k  2 输出0 解释给定范围中有 0 个美丽数字。 5 不是美丽整数因为它的奇数数位和偶数数位的数目不相等。 提示 0  low  high  109 0  k  20 我的代码超内存了 
class Solution(object):def numberOfBeautifulIntegers(self, low, high, k):count  0for i in range(low,high1):ji  0ou  0if i%k0:length  len(str(i))for p in str(i):if jilength//21 or oulength//21:breakif p in [1,3,5,7,9]:ji  ji  1else:ou  ou  1if ouji:count  count  1return count看题解是数位DP没接触过。。