最牛网站设计公司,商城网站支付端怎么做,网络服务商机构,wordpress 文章页 模板记录了初步解题思路 以及本地实现代码#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/9 440. 字典序的第K小数字6/10 3442. 奇偶频次间的最大差值 I6/11 3445. 奇偶频次间的最大差值 II6/12 3423. 循环数组中相邻元素的最大差值6/13 2616. 最小化数对的最大…记录了初步解题思路 以及本地实现代码并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/9 440. 字典序的第K小数字6/10 3442. 奇偶频次间的最大差值 I6/11 3445. 奇偶频次间的最大差值 II6/12 3423. 循环数组中相邻元素的最大差值6/13 2616. 最小化数对的最大差值6/14 2566. 替换一个数字后的最大差值6/15 6/9 440. 字典序的第K小数字 字典树思路 从小到大考虑 每个节点最多拥有10个子节点 例如节点1 在小于n的情况下 可以有第一层子节点10,11…19 最小值为110 最大值为1109 可以有第二层子节点100,101,…199 最小值为1010 最大值为19109 记录每一层子节点最大最小值minv maxv next_minv10minv next_maxv 10maxv9 每一层节点个数为 min(maxv,n)-minv1 最大值不能超过n 从最小前缀cur1开始找起 统计1开头的所有数量num 如果需要的k大于等于num 则减去个数num 继续寻找下一个前缀2 cur cur1 如果k小于num 说明需要的数以1开头 进入1的第一层子节点继续寻找cur cur*10 此时经过了节点1 所以k需要减去1 此时节点为10继续上述步骤 直至找到第k个 def findKthNumber(n, k)::type n: int:type k: int:rtype: intdef find(prefix,n):count,minv,maxv0,prefix,prefixwhile minvn:count min(maxv,n)-minv1minv *10maxv maxv*109return countcur 1k -1while k0:num find(cur,n)if numk:k-numcur1else:cur*10k-1return cur 6/10 3442. 奇偶频次间的最大差值 I 依次统计 def maxDifference(s)::type s: str:rtype: intfrom collections import Counterc Counter(s)odd max(x for x in c.values() if x%21)even min(x for x in c.values() if x%20)return odd-even 6/11 3445. 奇偶频次间的最大差值 II 字符只包含0~4 枚举各种字符之间的情况 https://leetcode.cn/problems/maximum-difference-between-even-and-odd-frequency-ii/solutions/3061845/mei-ju-qian-zhui-he-hua-dong-chuang-kou-6cwsm/?envTypedaily-questionenvId2025-06-11 def maxDifference(s, k)::type s: str:type k: int:rtype: intslist(map(int,s))ansfloat(-inf)for x in range(5):for y in range(5):if xy:continuecurs[0]*5pres[0]*5mins[[float(inf),float(inf)],[float(inf),float(inf)]]l0for i,v in enumerate(s):curs[v]1ri1while r-lk and curs[x]pres[x] and curs[y]pres[y]:p,qpres[x]1,pres[y]1mins[p][q]min(mins[p][q],pres[x]-pres[y])pres[s[l]]1l1if rk:ansmax(ans,curs[x]-curs[y]-mins[curs[x]1^1][curs[y]1])return ans 6/12 3423. 循环数组中相邻元素的最大差值 遍历 def maxAdjacentDistance(nums)::type nums: List[int]:rtype: intansfloat(-inf)nlen(nums)for i in range(n):ans max(ans,abs(nums[i]-nums[(i1)%n]))return ans 6/13 2616. 最小化数对的最大差值 将数组从小到大排列 dp[n]代表前n个数中满足条件的数对个数 二分 def minimizeMax(nums, p)::type nums: List[int]:type p: int:rtype: intnums.sort()def find(mx):cnt0i0while ilen(nums)-1:if nums[i1]-nums[i]mx:cnt1i2else:i1return cntpl,r0,nums[-1]-nums[0]while lr:mid(lr)//2if find(mid):rmidelse:lmid1return l 6/14 2566. 替换一个数字后的最大差值 将最高位非9替换为9最大 将最高位非0替换为0最小 转换为字符串寻找 def minMaxDifference(num)::type num: int:rtype: intsstr(num)pos0minsswhile poslen(s) and s[pos]9:pos1if poslen(s):ss.replace(s[pos],9)minsmins.replace(mins[0], 0)return int(s)-int(mins) 6/15