Leetcode刷题 2021.02.15

  • Leetcode1758 生成交替二进制字符串的最少操作数
  • Leetcode1760 袋子里最少数目的球
  • Leetcode1759 统计同构子字符串的数目

Leetcode1758 生成交替二进制字符串的最少操作数

给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。

交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。

返回使 s 变成 交替字符串 所需的 最少 操作数。

回家本来以为能好好复习,没想到过年总是又各种各样的琐事。昨天同学聚会到凌晨,实在没动力更博了,断更一天。/(ㄒoㄒ)/~~
今天每日一题还是简单的,因为可能的字符串只有"10……"或者"01……"开头这两种情况。因此只要统计这两种情况的最小值就行了。

class Solution {public int minOperations(String s) {char[] arr = s.toCharArray();int res1 = 0, res2 = 0;//统计"10"开头的情况for(int i = 0; i < arr.length; i++){if (i % 2 == 0){if (arr[i] == '0') res1++;}else{if (arr[i] == '1') res1++;}}//统计"01"开头的情况for(int i = 0; i < arr.length; i++){if (i % 2 == 0){if (arr[i] == '1') res2++;}else{if (arr[i] == '0') res2++;}}//取二者最小值即可return Math.min(res1, res2);}
}

Leetcode1760 袋子里最少数目的球

给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。

你可以进行如下操作至多 maxOperations 次:

选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有 正整数 个球。
比方说,一个袋子里有 5 个球,你可以把它们分到两个新袋子里,分别有 1 个和 4 个球,或者分别有 2 个和 3 个球。
你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。

请你返回进行上述操作后的最小开销。

昨天周赛也没参加,今天看了下题目,还是比较简单的一次周赛。
看到最大最小,可以想到二分查找逼近。就是做了很多次的二分查找模板题了。

class Solution {public int minimumSize(int[] nums, int maxOperations) {int i = 1, j = 1_000_000_000;//二分模板while(i < j){int mid  = i + (j - i) / 2;if (helper(nums, maxOperations, mid)){j = mid;}else{i = mid + 1;}}return i;}private boolean helper(int[] nums, int maxOperations, int target){int i = 0;//统计数组中的元素是否可以在maxOperations次操作下//分割为最大为targetwhile (i < nums.length){if (nums[i] > target){//如果target为4, nums[i]为8, 那么只需要一次操作就能分为两个为4的元素//如果nums[i]为9,就需要三次分为4,4,1的元素int temp = nums[i] / target, mod = nums[i] % target;maxOperations -= mod == 0 ? temp - 1: temp;if (maxOperations < 0) return false;}i++;}return true;}
}

Leetcode1759 统计同构子字符串的数目

给你一个字符串 s ,返回 s 中 同构子字符串 的数目。由于答案可能很大,只需返回对 109 + 7 取余 后的结果。

同构字符串 的定义为:如果一个字符串中的所有字符都相同,那么该字符串就是同构字符串。

子字符串 是字符串中的一个连续字符序列。

还是比较简单的滑动窗口题,就是遍历连续相同的字符长度就行了。字符串的数目可以用高斯求和公式。

class Solution {public int countHomogenous(String s) {char[] arr = s.toCharArray();long res = 0;int i = 0, n = arr.length, mod = (int)1e9+7;while (i < n){long count = 1;//获取连续相同的字符串的长度while (i < n - 1 && arr[i] == arr[i + 1]){count++;i++;}i++;//加上同构字符串长度res += (1 + count) * count / 2;//取模res %= mod;}return (int) res;}
}

Leetcode刷题 2021.02.15相关推荐

  1. Leetcode刷题 2021.02.26

    Leetcode刷题 2021.02.26 Leetcode1178 猜字谜 Leetcode869 重新排序得到 2 的幂 Leetcode1676 二叉树的最近公共祖先 IV Leetcode11 ...

  2. Leetcode刷题 2021.01.22

    Leetcode刷题 2021.01.22 Leetcode1042 不邻接植花 Leetcode1010 总持续时间可被 60 整除的歌曲 Leetcode1091 二进制矩阵中的最短路径 Leet ...

  3. LeetCode刷题记录02——新手村专辑(一)

    新手村专辑 题目 1480一维数组的动态和 我的思路 我的代码 提交结果 代码优化 总结 383赎金信 我的思路 我的代码 提交结果 代码优化 总结 题目 1480一维数组的动态和 1480一维数组的 ...

  4. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  5. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  6. 一个算法笨蛋的12月leetCode刷题日记

    类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...

  7. C#LeetCode刷题-程序员面试金典

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...

  8. leetcode刷题目录总结

    题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...

  9. Leetcode刷题

    刷题 leetcode 1.两数之和 #哈希表 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int ...

  10. leetcode刷题总结

    专栏 专栏 c语言基础 数据结构与算法 博客 分类 数据结构 算法 leetcode总结 错题 面试题 10.02. 变位词组 罗马数字转整数 c语言基础 二维数组 sizeof的用法 宏定义:取最大 ...

最新文章

  1. 大规模web服务开发技能
  2. blob转file对象_C++核心准则C.41:构造函数生成的对象应该被完全初始化
  3. 如何更改tomcat7及以上版本内存设置
  4. Hessian序列化复杂对象
  5. .NET各版本一览表
  6. IBM并购网络视频会议商WebDialogs 加入Lotus Sametime
  7. java窗口向mysql加信息_Java中如何实现向DBC方式向表中添加数据
  8. 渐变颜色Qt学习:QPainter之渐变填充
  9. codevs——1507 酒厂选址
  10. matlab2c使用c++实现matlab函数系列教程-cat函数
  11. Python3 学习第十二弹: 补充something
  12. Oracle项目管理系统之合同基本信息
  13. 计算机控制电缆单价,zr-djyvrp3X2X0.5阻燃计算机控制电缆单价
  14. AppStore审核
  15. python 动画场景_clarisse电影级CG场景渲染中文教学
  16. Matlab代码运行基础文章讲解
  17. 移民找老张解析:美国绿卡与美国公民身份的区别
  18. 什么是SVN?SVN的简介安装和使用
  19. 自学SQL网题库答案
  20. XPwn黑客破解秀,16位网红见证黑掉小米

热门文章

  1. 自训练和半监督学习介绍
  2. 判断曲线方向是逆时针还是顺时针
  3. Java - 从零学起(二)
  4. 小程序springboot宿舍管理毕业设计源码171008
  5. orcad基础全操作(直流分析,交流分析,瞬态分析,静态工作点,噪声分析)
  6. 一个程序小白的大胆尝试 (鸡汤)
  7. 谷歌(gmail)邮箱开启SMTP服务
  8. 多项式展开的逆过程的MATLAB实现
  9. CTFshou wed文件上传
  10. Deepin、统信UOS等Linux系统连接Windows网络邻居的共享文件夹的方法