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

o2o商城上的二级网站企业推广宣传文案

o2o商城上的二级网站,企业推广宣传文案,站牛网是做什么的,做外贸比较好的网站有哪些2024.1.28 题目来源我的题解方法一 深度搜索(DFS)/广度搜索(BFS)方法二 数学 题目来源 力扣每日一题;题序:365 我的题解 方法一 深度搜索(DFS)/广度搜索(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),状态数最多有 (x+1)(y+1)种,对每一种状态进行深度优先搜索的时间复杂度为 O(1),因此总时间复杂度为 O(xy)。
空间复杂度:O(xy),由于状态数最多有 (x+1)(y+1) 种,哈希集合中最多会有 (x+1)(y+1) 项,因此空间复杂度为 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;}Queue<int[]> queue = new LinkedList<>();queue.offer(new int[]{0, 0});Set<Long> 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;}Queue<int[]> queue = new LinkedList<>();queue.offer(new int[]{0, 0});Set<Long> 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(jug1Capacity+jug2Capacity<targetCapacity)return false;if(jug1Capacity==0||jug2Capacity==0)return targetCapacity==0||jug1Capacity+jug2Capacity==targetCapacity;return targetCapacity%gcd(jug1Capacity,jug2Capacity)==0;
}
public int gcd(int x,int y){int z=x%y;while(z!=0){x=y;y=z;z=x%y;}return y;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

http://www.laogonggong.com/news/475.html

相关文章:

  • 垂直网站建设方案书重庆seo网站管理
  • 手机p2p网站一键优化大师
  • 全国工商企业查询平台百度seo关键词
  • php做网站教程广州市网络seo外包
  • 网站备案需先做网站吗培训机构有哪些
  • 是网站建设专业好中国十大电商公司排名
  • 网站上线流程图免费com网站域名注册
  • 门户网站建设工作情况总结资源网站排名优化seo
  • 浙江大经建设集团网站seo和sem的联系
  • 网站建设中端口号的作用是什么意思软文发布平台
  • 做vip视频网站侵权广州专门做网站
  • 蚂蜂窝网站源码手机百度app安装下载
  • 做网站要多少钱友情链接的定义
  • 查询建设银行卡卡号网站seo优化是什么职业
  • 大型建设网站推广软文范例100字
  • 网站后台管理系统模块百度网盘破解版
  • wordpress修改了访问地址济南优化网页
  • 如何做律所网站东莞seo网站排名优化
  • 做网站服务费税率软文有哪些
  • 网站模板建设二级目录sem竞价代运营
  • 有没有电脑做兼职的网站网站优化哪个公司好
  • 国外画册设计欣赏网站互联网营销方法有哪些
  • 怎么推广我的网站百度站长平台电脑版
  • 网站建设seo合同书免费com域名注册永久
  • 桂林市网站建设公司怎么建立网站卖东西
  • 中国河北网站百度app官方下载安装到手机
  • 做盗版视频网站吗百度官方网站网址是多少
  • 企业网址格式seo搜索引擎实训心得体会
  • 营销型企业网站建设体会巨量引擎
  • 乐清网站网站建设开网店3个月来亏了10万