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

做薪酬调查有哪些网站国际网站 建设

做薪酬调查有哪些网站,国际网站 建设,企业网站建设最需要的是什么,wordpress新文章类型每日算法学习记录 - 250510 1. LeetCode 2086. 喂食仓鼠的最小食物桶数 题目描述: 解题思路 这是一个典型的贪心问题。我们的目标是用最少的食物桶喂饱所有仓鼠。 解题过程 核心思想是:当遇到一只仓鼠时,如何放置食物桶才能最有效地利用这个桶。 …

每日算法学习记录 - 250510

1. LeetCode 2086. 喂食仓鼠的最小食物桶数

题目描述:
题目图片

解题思路

这是一个典型的贪心问题。我们的目标是用最少的食物桶喂饱所有仓鼠。

解题过程

核心思想是:当遇到一只仓鼠时,如何放置食物桶才能最有效地利用这个桶。

  1. 遍历字符串 hamsters
  2. 当遇到一只仓鼠 s[i] == 'H' 时:
    • 优先考虑在其右侧(i+1)放置食物桶。 这样做是因为放在右边的食物桶 s[i+1] 不仅可以喂饱当前仓鼠 s[i],还有可能喂饱它右边的仓鼠 s[i+2](如果 s[i+2] 也是 ‘H’)。这使得一个桶的效益最大化。
    • 如果右侧 s[i+1] 是空地 '.':我们在此处放置一个桶,计数器 ret 加 1。由于 s[i+1] 上的桶可以喂饱 s[i] 和潜在的 s[i+2],我们可以跳过检查 s[i+1] (现在是桶) 和 s[i+2] (已被喂饱)。因此,我们将索引 i 向前移动 2 格(i += 2),加上循环自身的 i++,相当于下次从 i+3 开始检查。
    • 如果右侧不能放置(比如 i+1 越界,或者 s[i+1] 是另一只仓鼠 ‘H’),再考虑在其左侧(i-1)放置食物桶。
    • 如果左侧 s[i-1] 是空地 '.':我们在此处放置一个桶,计数器 ret 加 1。这个桶喂饱了 s[i]。索引 i 正常通过循环的 i++ 后移。
    • 如果左右两侧都无法放置食物桶:那么当前仓鼠 s[i] 无法被喂饱,根据题意返回 -1。
  3. 遍历完成后,返回 ret

复杂度分析

  • 时间复杂度: O ( N ) O(N) O(N), 其中 N N N 是字符串 hamsters 的长度。我们只需要遍历一次字符串。
  • 空间复杂度: O ( N ) O(N) O(N) O ( 1 ) O(1) O(1)

代码实现

class Solution {public int minimumBuckets(String hamsters) {int ret = 0;char[] s = hamsters.toCharArray();int n = s.length;for (int i = 0; i < n; i++) {if (s[i] == 'H') {char left = i > 0 ? s[i - 1] : 'H';char right = i < n - 1 ? s[i + 1] : 'H';if (right == '.') {ret++;i += 2;} else if (left == '.') {ret++;} else {return -1;}}}return ret;}
}

2. LeetCode 2571. 将整数减少到零需要的最少操作数

题目描述:
题目图片

解题思路

这个问题可以通过分析数字的二进制表示,并采用贪心策略来解决。目标是每次操作都尽可能有效地减少 n 或将其转化为更容易处理的形式(更接近2的幂)。

解题过程

我们将整数 n 视为其二进制表示。每次操作我们可以选择加上或减去一个2的幂。

  1. 获取最低位的 ‘1’:
    使用位运算 lowbit = n & (-n) 可以得到 n 的二进制表示中,最低位的那个 ‘1’ 以及它之后的所有 ‘0’ 组成的数。这个 lowbit 值本身就是一个2的幂,对应题目中可以操作的数。

  2. 贪心决策:
    对于当前的 n 和其 lowbit

    • 情况1: lowbit 的左边(更高一位)也是 ‘1’。
      例如,n = 6 (0110_2)lowbit = 2 (0010_2)。此时 lowbit 的左边是 ‘1’。
      这种情况通过 (n & (lowbit << 1)) > 0 来判断。
      我们选择 n = n + lowbit6 + 2 = 8 (1000_2)
      这样做的好处是,...011... 形式的位序列通过加法可以变成 ...100...,有效地将两个(或更多连续的)'1’s 通过进位合并,从而可能更快地减少 ‘1’ 的总数或简化数字结构。
    • 情况2: lowbit 的左边是 ‘0’。
      例如,n = 4 (0100_2)lowbit = 4 (0100_2)。或者 n = 10 (1010_2)lowbit = 2 (0010_2)
      这种情况是 (n & (lowbit << 1)) == 0
      我们选择 n = n - lowbit4 - 4 = 010 - 2 = 8 (1000_2)
      这样做直接消除了最低位的 ‘1’。
  3. 迭代与计数:
    每次操作后,操作数 ret 加 1。
    循环继续,直到 n 变为0。

  4. 特殊循环终止条件 (优化):
    n 变成一个2的幂时(即 (n & (n - 1)) == 0n > 0),我们知道只需要再进行一次操作(减去 n 本身)就可以将其变为0。
    代码中的循环条件 (n & (n - 1)) != 0 利用了这一点:当 n 成为2的幂或0时,循环终止。
    ret 初始化为 1。如果 n 初始就是2的幂,循环不进入,直接返回 1(一次操作)。如果 n 不是2的幂,进入循环,每执行一次 n += lowbitn -= lowbitret 增加。当循环结束时,n 必然是一个2的幂(因为 n 不会是0退出循环,除非一开始就是0,但题目约束 1 <= n <= 10^5)。此时的 ret 值已经包含了将这个最终的2的幂减到0的那次操作。

复杂度分析

  • 时间复杂度: O ( log ⁡ N ) O(\log N) O(logN)。在二进制表示下,每次操作要么消除一个 ‘1’,要么通过进位合并 ‘1’,总体上使问题规模减小。操作的次数与 N 的二进制位数大致成正比。
  • 空间复杂度: O ( 1 ) O(1) O(1)。我们只需要常数级别的额外空间。

代码实现

class Solution {public int minOperations(int n) {int ret = 1;while ((n & (n - 1)) != 0) {int lowbit = n & (-n);if ((n & (lowbit << 1)) > 0) {n += lowbit;} else {n -= lowbit;}ret++;}return ret;}
}

http://www.dtcms.com/wzjs/592379.html

相关文章:

  • 中小型企业网站大全wordpress安装时候500错误
  • 南京网站设计公司哪儿济南兴田德润怎么联系wordpress 为分类定模板
  • 做网站要学那些淘宝网页版官网入口
  • 网站被泛解析如何设计一个小程序
  • 网站建设销售员话术网站安全建设情况报告
  • 东莞网站建设 包装材料大型电商网站开发方案
  • 医院网站建设预算表雇主品牌建设
  • 电商网站计划桐柏微网站建设
  • 网站怎么做关键词在哪做郑州经济技术开发区政务服务中心
  • 做一个网站都需要什么做攻略的网站好
  • 完整网站开发教程wordpress 图文直播插件
  • 昆明网站建设技术研发中心网站建设备案计划书
  • 企业网站备案 优帮云修改wordpress用户名密码忘记
  • 陕西专业网站建设哪家好工作服厂家联系方式
  • 网站建设开发兴田德润成都广告设计
  • 成都微网站系统Wordpress调用搜索
  • 属于c2c网站的有哪几个成都创意网站设计
  • 网站建设的实训报告的实训感受网站建设中最重要的是什么意思
  • jsp和php做网站那个快替换wordpress logo
  • 设计 微网站设计企业网站多少钱
  • 网站建设乙方义务域名备案网站名称
  • 为什么后台编辑内容和网站上面显示的内容不一致广告片宣传片拍摄
  • 学网站开发有前途吗山东网站备案公司
  • 用ps切片做网站能不能完成网络托管运营
  • 音乐网站建设教程视频教程在国外做购物网站
  • 张槎网站开发做网站的html代码格式
  • 衡水网站建设设计网站域名骗子
  • 外网工业设计网站公众号 链接wordpress
  • 网站开发公司需要招聘哪些人银川做网站最好的公司
  • 南阳哪里做网站专门做游戏交易的网站