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

24.日常算法

1. 数组中两元素的最大乘积

题目来源
给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。

示例 1:
输入:nums = [3,4,5,2]
输出:12
解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1) * (nums[2]-1) = (4-1) * (5-1) = 3 * 4 = 12 。

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int i = nums.size() - 1;
        int j = i - 1;
        return (nums[i]-1)*(nums[j]-1);
    }
};

2. 替换后的最长重复字符

题目来源
给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。在执行上述操作后,返回 包含相同字母的最长子字符串的长度。

示例 1:
输入:s = “ABAB”, k = 2
输出:4
解释:用两个’A’替换为两个’B’,反之亦然。

class Solution {
public:
    int characterReplacement(string s, int k) {
        int ret = 0;
        int left = 0, right = 0;
        int hash[26] = {0};
        int max_count = 0;
        while (right < s.size()){
            hash[s[right] - 'A']++;
            max_count = max(max_count, hash[s[right] - 'A']);
            // 不满足窗口大小中最多重复字母数+k < 窗口大小
            while (max_count + k < right - left + 1){
                hash[s[left] - 'A']--;
                ++left;
            }
            ret = max(ret, right - left + 1);
            ++right;
        }
        return ret;
    }
};

http://www.kler.cn/a/517976.html

相关文章:

  • 笔灵ai写作技术浅析(一)
  • PyCharm接入DeepSeek实现AI编程
  • 飞牛 fnOS 安装8852be网卡驱动并成功连接
  • Golang Gin系列-8:单元测试与调试技术
  • 2024年终总结
  • 【PowerQuery专栏】PowerQuery的M语言函数Access数据库访问
  • Android Studio打包APK
  • scala基础学习(数据类型)-哈希表
  • 吴恩达深度学习——深层神经网络
  • 关于deepin上运行Qt开发的程序
  • Spring Boot 集成 WebClient 实战教程 实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono
  • 管理方法(15)-- 向华为学习根因分析
  • 小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度
  • seq2seq以及注意力机制
  • js小游戏---2048(附源代码)
  • 支持大功率输出高速频闪的图像处理用光源控制器
  • 亿坊软件前端命名规范
  • windows在命令行中切换盘符
  • springboot中DTO、VO、Entity相互转换
  • 低代码系统-产品架构案例介绍、得帆云(九)
  • 如何用VSCODE配置C++多文件编译
  • three.js+WebGL踩坑经验合集(2):3D场景被相机裁切后,被裁切的部分依然可以被鼠标碰撞检测得到(射线检测)
  • 豆包MarsCode:小C的类二进制拼图
  • ansible自动化运维实战--yaml的使用和配置(7)
  • http请求获取客户端ip
  • Flink(十一): DataStream API (八) Checkpointing