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

佛山企业网站建设特色上海嘉定网站建设

佛山企业网站建设特色,上海嘉定网站建设,免费招代理的平台有哪些,自贡订房中心网站建设目录 1. 整数反转 2. 求最大公约数和最小公倍数 最大公约数 最小公倍数 3. 单词搜索 II 附录#xff1a; DFS 深度优先搜索算法 BFS 广度优先搜索算法 BFS 和 DFS 的区别 1. 整数反转 给你一个 32 位的有符号整数 x #xff0c;返回将 x 中的数字部分反转后的结果。… 目录 1. 整数反转 2. 求最大公约数和最小公倍数 最大公约数 最小公倍数 3. 单词搜索 II 附录 DFS 深度优先搜索算法 BFS 广度优先搜索算法 BFS 和 DFS 的区别 1. 整数反转 给你一个 32 位的有符号整数 x 返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] 就返回 0。 假设环境不允许存储 64 位整数有符号或无符号。 示例 1 输入x 123 输出321 示例 2 输入x -123 输出-321 示例 3 输入x 120 输出21 示例 4 输入x 0 输出0 提示 -2^31 x 2^31 - 1 代码 import math class Solution:def reverse(self, x: int) - int:r 0y 0abs_x abs(x)negative x 0while abs_x ! 0:r abs_x % 10y y*10rabs_x int(math.floor(abs_x/10))if negative:y -yreturn 0 if (y 2147483647 or y -2147483648) else ys Solution() nums [123, -123, 120, 0, 1234567809]for x in nums:print(s.reverse(x)) 优化后的代码 class Solution:def reverse(self, x: int) - int:num, neg 0, x0if neg: x * -1while x:num num*10 x%10x // 10res -num if neg else numreturn res if -2**31res2**31 else 0s Solution() nums [123, -123, 120, 0, 1234567809]for x in nums:print(s.reverse(x)) 代码2 python 数和字串的转换非常方便负数考虑负号。 class Solution(object):def reverse(self, x:int)-int:res (-1 if x0 else 1)*int(str(abs(x))[::-1])return res if -2**31res2**31 else 0s Solution() nums [123, -123, 120, 0, 1234567809]for x in nums:print(s.reverse(x)) 代码3 负号还可以用 x//abs(x) 来求但要排队div by 0。 class Solution(object):def reverse(self, x:int)-int:res abs(x)//x*int(str(abs(x))[::-1]) if x else 0return res if -2**31res2**31 else 0s Solution() nums [123, -123, 120, 0, 1234567809]for x in nums:print(s.reverse(x)) 2. 求最大公约数和最小公倍数 输入两个数x 和y如果x 或y 小于等于0提示请输入正整数求这两个数的最大公约数和最小公倍数。 注意可以采用欧几里得辗转相除算法来求最大公约数。最小公倍数的计算方法是两数的乘积除以两数最大公约数的结果。 x int(input(输入x:)) y int(input(输入y:)) if x 0 or y 0:print(请输入正整数) if x y:x,y y,x v1 x*y v2 x%y while v2 ! 0:x yy v2v2 x % y v1 v1 // y print(最大公约数为:%d % y) print(最小公倍数为:%d % v1) 最大公约数 方法一for循环 def GCD(m, n):gcd 1 # 此行可以省略for i in range(1,min(m, n)1):if m%i0 and n%i0:gcd ireturn gcdprint(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 方法二while循环 def GCD(m, n):while m!n:if mn: m - nelse: n - mreturn mprint(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 方法三递归法 def GCD(m, n):if n0: return mreturn GCD(n, m%n)print(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 方法四辗转相除法 def GCD(m, n):while n!0:m, n n, m%nreturn mprint(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 方法五递减法 def GCD(m, n):gcd min(m, n)while m%gcd or n%gcd:gcd - 1return gcdprint(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 方法六库函数math.gcd from math import gcdprint(gcd(81,3))print(gcd(81,15))print(gcd(81,54)) 或者直接用 __import__(math).gcd __import__(math).gcd(81,3) __import__(math).gcd(81,15) __import__(math).gcd(81,54) 方法七约分法库函数fractions.Fraction() def GCD(m, n):from fractions import Fractionreturn m//Fraction(m, n).numerator #取分子#return n//Fraction(m, n).denominator #或取分母print(GCD(81,3))print(GCD(81,15))print(GCD(81,54)) 最小公倍数 方法一循环暴力法 def LCM(m, n):for i in range(max(m,n),m*n1):if i%m0 and i%n0:return iprint(LCM(81,3))print(LCM(81,15))print(LCM(81,54)) 方法二与最大公约数的关系 最小公倍数LCM 与 最大公约数GCD的关系 m * n LCM(m, n) * GCD(m, n) 对应最大公约数的几种方法返回 m*n 整除 GCD(m,n) 即可。 3. 单词搜索 II 给定一个 m x n 二维字符网格 board 和一个单词字符串列表 words找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序通过 相邻的单元格 内的字母构成其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。 示例 1 输入board [[o,a,a,n],[e,t,a,e],[i,h,k,r],[i,f,l,v]], words [oath,pea,eat,rain] 输出[eat,oath]示例 2 输入board [[a,b],[c,d]], words [abcb] 输出[]提示 m board.lengthn board[i].length1 m, n 12board[i][j] 是一个小写英文字母1 words.length 3 * 1041 words[i].length 10words[i] 由小写英文字母组成words 中的所有字符串互不相同 class Solution:def findWords(self, board: list, words: list) - list:if not board or not board[0] or not words:return []self.root {}for word in words:node self.rootfor char in word:if char not in node:node[char] {}node node[char]node[#] wordres []for i in range(len(board)):for j in range(len(board[0])):tmp_state []self.dfs(i, j, board, tmp_state, self.root, res)return resdef dfs(self, i, j, board, tmp_state, node, res):if # in node and node[#] not in res:res.append(node[#])if [i, j] not in tmp_state and board[i][j] in node:tmp tmp_state [[i, j]]candidate []if i - 1 0:candidate.append([i - 1, j])if i 1 len(board):candidate.append([i 1, j])if j - 1 0:candidate.append([i, j - 1])if j 1 len(board[0]):candidate.append([i, j 1])node node[board[i][j]]if # in node and node[#] not in res:res.append(node[#])for item in candidate:self.dfs(item[0], item[1], board, tmp, node, res)if __name__ __main__:s Solution()board [[o,a,a,n],[e,t,a,e],[i,h,k,r],[i,f,l,v]]words [oath,pea,eat,rain]print(s.findWords(board, words))board [[a,b],[c,d]]words [abcb]print(s.findWords(board, words))输出 [oath, eat] [] 附录 DFS 深度优先搜索算法 Depth-First-Search是一种用于遍历或搜索树或图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点则选择其中一个作为源节点并重复以上过程整个进程反复进行直到所有节点都被访问为止。 BFS 广度优先搜索算法 Breadth-First Search又译作宽度优先搜索或横向优先搜索是一种图形搜索算法。简单的说BFS是从根节点开始沿着树的宽度遍历树的节点。如果所有节点均被访问则算法中止。 BFS 和 DFS 的区别 1 数据结构 bfs 遍历节点是先进先出一般使用队列作为辅助数据结构 dfs遍历节点是先进后出一般使用栈作为辅助数据结构 2 访问节点的方式 bfs是按层次访问的先访问源点再访问它的所有相邻节点并且标记结点已访问根据每个邻居结点的访问顺序依次访问它们的邻居结点并且标记节点已访问重复这个过程一直访问到目标节点或无未访问的节点为止。 dfs 是按照一个路径一直访问到底当前节点没有未访问的邻居节点时然后回溯到上一个节点不断的尝试直到访问到目标节点或所有节点都已访问。 3 应用 bfs 适用于求源点与目标节点距离近的情况例如求最短路径。 dfs 更适合于求解一个任意符合方案中的一个或者遍历所有情况例如全排列、拓扑排序、求到达某一点的任意一条路径。
http://www.hkea.cn/news/14405533/

相关文章:

  • 许昌网站seo湛江网站建设哪家优惠多
  • 如何做天猫网站单页成品网站
  • 想做个网站找谁做专业设计素材网站
  • 触屏手机网站建设网站建设主管
  • 大型网站空间费用网络推广服务商产品介绍
  • 网站改版 301跳转企业门户网站建设优势
  • 网站空间有什么用软件开发输出文档
  • 长沙高新区建设局网站永康公司做网站
  • 为什么实验楼网站上做实验这么卡微信导入wordpress
  • 建设银行广达行网站关于网的设计创意作品
  • 网站备案网站我想带货怎么找货源
  • 免费建站网站seo黄村做网站哪家好
  • 网站建设人群wordpress网易插件怎么用
  • 普陀企业网站建设网站建设好了怎么发布
  • 珠海网站制作门户网站群建设
  • 广宁县住房和城乡建设局网站新遵义
  • 网站如何建设手机版温州专业微网站制作
  • 怎么建设淘客自己的网站_php企业门户网站
  • 建网站 主流软件学校网站建设申请报告
  • 专门做婚姻法的网站企业工商信息查询
  • 门户网站建设的作用及意义wordpress 表白
  • 自己电脑做网站域名备案建网站详细教程
  • 做名片的网站网站建设实训个人总结3000字
  • 养老院网站开发背景惠州企业建站模板
  • 网站代码预览器wordpress后台更新等待响应
  • 连云港做网站设计动易学校网站模板
  • 做网站需要看那几点wordpress 登录用户信息
  • 游戏网站怎么做推广做电脑系统最好的网站
  • 网站做指向是什么意思南昌seo网站开发
  • 济南优化网站排名企业邮箱怎么申请账号