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

做门户网站的意义在哪龙岗网站优化

做门户网站的意义在哪,龙岗网站优化,php 做视频网站,两学一做网站安徽省2024.1.28 题目来源我的题解方法一 深度搜索#xff08;DFS#xff09;/广度搜索#xff08;BFS#xff09;方法二 数学 题目来源 力扣每日一题#xff1b;题序#xff1a;365 我的题解 方法一 深度搜索#xff08;DFS#xff09;/广度搜索#xff08;BFS#xff… 2024.1.28 题目来源我的题解方法一 深度搜索DFS/广度搜索BFS方法二 数学 题目来源 力扣每日一题题序365 我的题解 方法一 深度搜索DFS/广度搜索BFS 首先对题目进行建模。观察题目可知在任意一个时刻此问题的状态可以由两个数字决定X 壶中的水量以及 Y 壶中的水量。 在任意一个时刻我们可以且仅可以采取以下几种操作   把 X 壶的水灌进 Y 壶直至灌满或倒空   把 Y 壶的水灌进 X 壶直至灌满或倒空   把 X 壶灌满   把 Y 壶灌满   把 X 壶倒空   把 Y 壶倒空。 因此本题可以使用深度优先搜索来解决。搜索中的每一步以 cap1, cap2 作为状态即表示 X 壶和 Y 壶中的水量。在每一步搜索时我们会依次尝试所有的操作递归地搜索下去。这可能会导致我们陷入无止境的递归因此我们还需要使用一个哈希结合HashSet存储所有已经搜索过的 cap1, cap2 状态保证每个状态至多只被搜索一次。但是由于数据量问题导致递归空间不足因此最终使用广度优先实现。 时间复杂度O(xy)状态数最多有 (x1)(y1)种对每一种状态进行深度优先搜索的时间复杂度为 O(1)因此总时间复杂度为 O(xy)。 空间复杂度O(xy),由于状态数最多有 (x1)(y1) 种哈希集合中最多会有 (x1)(y1) 项因此空间复杂度为 O(xy)。 //未使用哈希函数进行优化直接将两个杯子的值构建字符串利用字符串类重写了哈希函数的特点保证集合中出现的内容唯一。public boolean canMeasureWater(int x, int y, int z) {if (x y z) {return false;}if (x z || y z || x y z) {return true;}Queueint[] queue new LinkedList();queue.offer(new int[]{0, 0});SetLong seen new HashSet();while (!queue.isEmpty()) {int[] state queue.poll();int remain_x state[0], remain_y state[1];if (seen.contains(hash(state))) {continue;}seen.add(hash(state));if (remain_x z || remain_y z || remain_x remain_y z) {return true;}// 把 X 壶灌满。queue.offer(new int[]{x, remain_y});// 把 Y 壶灌满。queue.offer(new int[]{remain_x, y});// 把 X 壶倒空。queue.offer(new int[]{0, remain_y});// 把 Y 壶倒空。queue.offer(new int[]{remain_x, 0});// 把 X 壶的水灌进 Y 壶直至灌满或倒空。queue.offer(new int[]{remain_x - Math.min(remain_x, y - remain_y), remain_y Math.min(remain_x, y - remain_y)});// 把 Y 壶的水灌进 X 壶直至灌满或倒空。queue.offer(new int[]{remain_x Math.min(remain_y, x - remain_x), remain_y - Math.min(remain_y, x - remain_x)});}return false;} //使用哈希函数进行优化自定义哈希函数。 public boolean canMeasureWater(int x, int y, int z) {if (x y z) {return false;}if (x z || y z || x y z) {return true;}Queueint[] queue new LinkedList();queue.offer(new int[]{0, 0});SetLong seen new HashSet();while (!queue.isEmpty()) {int[] state queue.poll();int remain_x state[0], remain_y state[1];if (seen.contains(hash(state))) {continue;}seen.add(hash(state));if (remain_x z || remain_y z || remain_x remain_y z) {return true;}// 把 X 壶灌满。queue.offer(new int[]{x, remain_y});// 把 Y 壶灌满。queue.offer(new int[]{remain_x, y});// 把 X 壶倒空。queue.offer(new int[]{0, remain_y});// 把 Y 壶倒空。queue.offer(new int[]{remain_x, 0});// 把 X 壶的水灌进 Y 壶直至灌满或倒空。queue.offer(new int[]{remain_x - Math.min(remain_x, y - remain_y), remain_y Math.min(remain_x, y - remain_y)});// 把 Y 壶的水灌进 X 壶直至灌满或倒空。queue.offer(new int[]{remain_x Math.min(remain_y, x - remain_x), remain_y - Math.min(remain_y, x - remain_x)});}return false;}private long hash(int[] state) {return (long) state[0] * 1000001 state[1];}方法二 数学 数学理论看官方题解 时间复杂度O(log(min(x,y)))取决于计算最大公约数所使用的算法的时间复杂度 空间复杂度O(1) public boolean canMeasureWater(int jug1Capacity, int jug2Capacity, int targetCapacity) {if(jug1Capacityjug2CapacitytargetCapacity)return false;if(jug1Capacity0||jug2Capacity0)return targetCapacity0||jug1Capacityjug2CapacitytargetCapacity;return targetCapacity%gcd(jug1Capacity,jug2Capacity)0; } public int gcd(int x,int y){int zx%y;while(z!0){xy;yz;zx%y;}return y; }有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~
http://www.eeditor.cn/news/122544/

相关文章:

  • 做建筑设计网站wordpress大学模板
  • 河南网站排名优化东莞百度搜索网站排名
  • 手机网站建设方案公司网站做的一样算不算侵权6
  • 深圳营销型网站建设公司网络服务网站建设合同文百科
  • 上海知名 网站设计公司如何让别人浏览我做的网站
  • 娄底建设网站的公司手机网站大全下载
  • 郑州百度网站推广电商平台运营费用预算
  • 鸭梨网站建设杭州西湖区抖音seo方案
  • 沈阳手机网站建设提供做网站公司
  • 久其软件公司网站外链交换平台
  • 网站建设书生商友宁波关键词排名优化
  • 网站反向链接学校网站建设 应用情况
  • 国外创意摄影网站vps服务器的iis网站
  • 网站抓取诊断ip出错苏州seo网站公司
  • 服务器放多个网站自己做一个app
  • 网站建设静态部分实训总结沈阳三好街附近做网站
  • 上饶建设局网站购物网站建设款流程
  • 七台河网站网站建设wordpress的模板目录在哪里
  • 个人网站欣赏的网站简要说明网站制作的基本步骤
  • 做网站 建站saas建站平台
  • 小型网站建设价格低里水网站开发
  • 舟山网站开发免费设计企业logo
  • 手机网站做安卓客户端网站建设推广公司哪家权威
  • 东莞网站建设 烤活鱼桂林做手机网站设计
  • wordpress迁站到阿里云人才网网站开发手册
  • 雅安公司做网站wordpress 优势
  • dede 网站改宽屏代码seo 优化一般包括哪些内容
  • 网站建设一定要买数据盘吗设计做的网站哪些好
  • ps做网站首页规范尺寸腾讯云一键wordpress
  • 鞍山做网站比较好的公司酒泉网站建设公司