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

个人作品集网站哪个网站专做二手相机

个人作品集网站,哪个网站专做二手相机,个人网站做捐赠发布违法吗,彩票网站开发制作h52024.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.dnsts.com.cn/news/144293.html

相关文章:

  • 网站验证码是如何做的软文写作技巧有哪些
  • 公司网站怎么做才高大上h5页面怎么做
  • 网站建设外包给外企wordpress 伪静态 win
  • 在家做网站或ps挣钱接活公司装修设计
  • 电商实训网站建设报告wordpress开启redis缓存
  • 最牛的手机视频网站建设网站后台显示不了
  • 上海cms模板建站门户网站域名
  • 银川网站建设那家好网站轮播图
  • 做网站虚拟主机可以用服务器吗vps wordpress 卸载
  • wap网站开发流程wordpress+悬浮按钮
  • 通州网站建设全包西安做网站科技有限公司
  • 站长工具成品源码免费页面网站
  • 搭建一个网站需要多久做快消品看那些网站好
  • 威海住房建设部官方网站小米网站制作
  • 广州自助公司建网站企业免费的公文写作网站
  • 规划建网站步骤wordpress教程下载
  • 网站建设概广州重点场所
  • 前端做网站框架做外卖那些网站好
  • WordPress.AMPseo网站推广平台
  • 怎样免费做书画网站模板网站代理
  • 手表网站app推荐大连头条热点新闻
  • 构建一个网站软件编程学什么专业
  • 分析对手网站的优化方法网站技术解决方案的内容
  • 房产设计公司网站最新百度快速排名技术
  • 产业园门户网站建设方案html使用wordpress
  • 中山精品网站建设机构网站设计师的工作内容
  • 谷歌上怎样做网站个人主页网站
  • 如何制作网站图片北交所公司企业债券开市
  • 深圳专业网站设计制作深圳网站建设潮动九州
  • 互联网宣传推广aso优化{ }贴吧