当前位置: 首页 > wzjs >正文

华为网站建设方案模板下载高粱seo博客

华为网站建设方案模板下载,高粱seo博客,响应式网页设计技术有哪些,一个网站建设的目标这两个问题的本质就是一个棵树,然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑,get_lower_largest_digit_dic是这两个题目的共同点 题目一: 小于n的最大数 算法题目:小于n的最大数 问题描述:给一个数组nums[5…

这两个问题的本质就是一个棵树,然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑,get_lower_largest_digit_dic是这两个题目的共同点

题目一: 小于n的最大数

算法题目:小于n的最大数
问题描述:给一个数组nums=[5,4,8,2],给一个n=5416, 让你从nums中选出一些元素,使得组成的数字是小于n的最大数,比如这个例子应该返回5288
这个题其实就是回溯一步,但是讨论的情况有点绕,细节可以看代码

class Solution:def get_num(self, candidates, num):max_str = str(max(list(candidates)))num_str = str(num)def get_lower_largest_digit_dic(candidates):dic={}prev = Nonefor i in range(10):dic[str(i)] = previf i in candidates:prev = str(i)return diclower_largest_digit_dic = get_lower_largest_digit_dic(candidates)i,l = 0,len(num_str)res_str_arr = ['0' for i in range(l)]while(i<l):if int(num_str[i]) in candidates and i<l-1:# 第一阶段,相等的一直往后填res_str_arr[i] = num_str[i]i += 1else:# 第二阶段:遇到最后一个,或者没有相等的(也分为几种情况),统一填为lower_largest_digit,然后后面统一填最大digit = lower_largest_digit_dic[num_str[i]]while digit == None and i > 0: #一直找不到,一直回溯i -= 1digit = lower_largest_digit_dic[num_str[i]]# 按照while不成功的情况讨论下if i == 0 and digit == None and l == 1:return Noneif i == 0 and digit == None and l > 1:res_str_arr[0] = '0'else:res_str_arr[i] = digitfor j in range(i+1,l):res_str_arr[j] = max_strreturn int(''.join(res_str_arr))if __name__ == '__main__':s = Solution()print(s.get_num({1,2,9,4}, 2533))  # 2499print(s.get_num({1,2,5,4}, 2543))  # 2542print(s.get_num({1,2,5,4}, 2541))  # 2525print(s.get_num({1,2,9,4}, 2111))  # 1999print(s.get_num({5,9}, 5555)) #999

题目二: 最大为 N 的数字组合

来自https://leetcode.com/problems/numbers-at-most-n-given-digit-set/

Given an array of digits which is sorted in non-decreasing order. You can write numbers using each digits[i] as many times as we want. For example, if digits = [‘1’,‘3’,‘5’], we may write numbers such as ‘13’, ‘551’, and ‘1351315’.

Return the number of positive integers that can be generated that are less than or equal to a given integer n.

Example 1:

Input: digits = [“1”,“3”,“5”,“7”], n = 100
Output: 20
Explanation:
The 20 numbers that can be written are:
1, 3, 5, 7, 11, 13, 15, 17, 31, 33, 35, 37, 51, 53, 55, 57, 71, 73, 75, 77.
Example 2:

Input: digits = [“1”,“4”,“9”], n = 1000000000
Output: 29523
Explanation:
We can write 3 one digit numbers, 9 two digit numbers, 27 three digit numbers,
81 four digit numbers, 243 five digit numbers, 729 six digit numbers,
2187 seven digit numbers, 6561 eight digit numbers, and 19683 nine digit numbers.
In total, this is 29523 integers that can be written using the digits array.
Example 3:

Input: digits = [“7”], n = 8
Output: 1

Constraints:

1 <= digits.length <= 9
digits[i].length == 1
digits[i] is a digit from ‘1’ to ‘9’.
All the values in digits are unique.
digits is sorted in non-decreasing order.
1 <= n <= 109

其实和题目一思路很相似,但是边界条件容易错:

class Solution:def atMostNGivenDigitSet(self, digits: List[str], n: int) -> int:def get_lt_digit_cnt_dic(digits_set):dic = {}prev = 0for i in range(0,10):stri = str(i)dic[stri] = previf stri in digits_set:prev += 1return dicdigits_set = set(digits)lt_digit_cnt_dic = get_lt_digit_cnt_dic(digits_set)dl = len(digits)nl = len(str(n))factorial = [1 for i in range(nl)]for i in range(1,nl):factorial[i] = factorial[i-1]*dlres1 = sum(factorial[i] for i in range(1,nl))res2,i = 0,0strn = str(n)while i<nl:lt_digit_cnt = lt_digit_cnt_dic[strn[i]]res2 += lt_digit_cnt * factorial[nl-(i+1)]if (strn[i] not in digits_set):breaki+=1# 这个条件容易漏掉,例如digits =["3","4","8"], n = 4if i == nl and strn[nl-1] in digits_set:res2 += 1# print(res1)return res1+res2
http://www.dtcms.com/wzjs/529783.html

相关文章:

  • 房地产三大巨头搜索引擎优化的主要工作有
  • 龙岗 营销型网站建设5118大数据平台官网
  • 山东城乡建设厅网站首页百度识图官网
  • 东莞网站建设上科广告推广系统
  • 图片网站模版安徽网站关键字优化
  • 小型网站建设费用竞价推广返点开户
  • 自己做的网站提示不安全百度搜索入口网址
  • 营销型企业网站建设案例短视频营销
  • 石家庄求做网站搜索seo引擎
  • 淘宝网站是谁做的好处班级优化大师免费下载app
  • 深圳鸿天顺网站建设平面设计网站
  • 最具有口碑的网站建设网络营销策划的具体流程是
  • wordpress重定向传递权重上海关键词优化外包
  • 本溪市做网站公司seo排名赚app最新版本
  • 做外贸主要是哪些网站百度推广app下载官方
  • wordpress网站导入百度怎么发自己的小广告
  • 公司网站网站不备案2024年的新闻
  • 聊城手机网站建设郑州seo外包顾问
  • 网站建设 西安杭州seo公司服务
  • 南京本地网站建站网站宣传推广文案
  • 做公司网站首页北京seo服务销售
  • 为什么网站需要静态化生成html南京关键词网站排名
  • 适合个人开网店的平台搜索引擎优化要考虑哪些方面
  • 微信小程序做直播网站论坛发帖
  • 做网站平台接单如何做营销活动
  • 手机网站如何做2345网址导航官网下载安装
  • 外包网站开发软文推广收费
  • 人民大学网站建设三一crm手机客户端下载
  • 兰州做网站 东方商易湖南网站设计外包服务
  • 新乡网站长沙seo网络公司