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

22.日常算法

1. 按奇偶排序数组

题目来源
给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。

示例 1:
输入:nums = [3,1,2,4]
输出:[2,4,3,1]
解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& nums) {
        int left = 0, right = nums.size() - 1;
        while (left != right){
            while (left < right && nums[left] % 2 == 0) left++;
            while (left < right && nums[right] % 2 != 0) right--;
            swap(nums[left], nums[right]);
        }
        return nums;
    }
};

2. 找到字符串中所有字母异位词

题目来源
给定两个字符串 s 和 p,找到 s 中所有 p 的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
变位词 指字母相同,但排列不同的字符串。

示例 1:
输入: s = “cbaebabacd”, p = “abc”
输出: [0,6]
解释:
起始索引等于 0 的子串是 “cba”, 它是 “abc” 的变位词。
起始索引等于 6 的子串是 “bac”, 它是 “abc” 的变位词。

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int> ret;
        if (p.size() > s.size()) return ret;
        unordered_map<char, int> hash;
        for (auto & x : p) hash[x]++;
        int left = 0, right = 0, count = 0;
        while (right < s.size()){
            hash[s[right]]--;
            count++;
            while (hash[s[right]] < 0){
                hash[s[left++]]++;
                --count;
            }
            if (count == p.size()) ret.push_back(left);
            ++right;
        }
        return ret;
    }
};

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

相关文章:

  • 初始SpringBoot:详解特性和结构
  • C语言程序设计十大排序—选择排序
  • EDI安全:2025年数据保护与隐私威胁应对策略
  • 一文了解如何在Qt中间集成Halcon窗口并在子线程显示(附工程源码下载链接)
  • vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
  • AI Agent:深度解析与未来展望
  • stm8s单片机(一) 工程塔建与第一个实验程序
  • 漏洞情报:为什么、要什么和怎么做
  • CrypTen——基于pytorch的隐私保护机器学习框架
  • Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
  • Julia语言的区块链
  • Java设计模式 三 工厂方法模式 (Factory Method Pattern)
  • HTML 基础入门:核心标签全解析
  • 深圳大学-计算机系统(3)-实验三取指和指令译码设计
  • simulink入门学习01
  • Redis、MongoDB 和 MySQL评估
  • IBM湖仓一体与向量数据库:访问MinIO控制台(Accessing the MinIO console)
  • AI对齐与开源发展:多学科融合创新之路
  • 第二讲 矩阵消元——用矩阵的左乘表示矩阵消元的过程
  • Spring注解篇:@RequestMapping详解
  • ESP-Mesh-Lite组网方案,赋能设备多场景联网通信,无线交互控制应用
  • PHP常见正则表达式
  • 不用安装双系统,如何在mac上玩windows游戏呢?
  • vim如何显示行号
  • 基于springboot+vue的校园二手物品交易系统的设计与实现
  • 在 Go 语言中如何高效地处理集合