每日两题 / 1.两数之和 49.字母异位词分组(LeetCode热题100)

news2024/10/6 0:29:32

1. 两数之和 - 力扣(LeetCode)
image.png

暴力解法: O ( N 2 ) O(N^2) O(N2)遍历数组,找两个数相加为target
O ( N ) O(N) O(N)解法:将所有数排序,并记录这些数的下标,双指针从左右向中间走。指向的两数相加大于target则r–,小于则l++,第一对相等的数即为答案。
当然,用二分、哈希也是可以的,不过时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)

贴双指针解法,证明很简单:思考为什么双指针不会移动到两个答案之间?反证一下就出来了

class Solution {
    typedef pair<int, int> PII;
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> ans(2);
        vector<PII> a;
        for (int i = 0; i < nums.size(); ++ i) {
            a.push_back({ nums[i], i });
        }
        sort(a.begin(), a.end());
        int l = 0, r = nums.size() - 1;
        while (l < r) {
            if (a[l].first + a[r].first > target) {
                r -- ;
            }
            else if (a[l].first + a[r].first < target) {
                l ++ ;
            }
            else {
                ans[0] = a[l].second, ans[1] = a[r].second;
                return ans;
            }
        }
        return ans;
    }
};

49. 字母异位词分组 - 力扣(LeetCode)
image.png

若单词重新排列后,和某个单词相同,则分为一组
可以确定的是,将所有单词中的字符升序排序后,将出现多个相同单词,这些单词作为“字母异位词”分为一组
对于每个单词,将其升序排序,用map记录该单词所位于的组号,若无记录,则作为新组

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> ans;
        unordered_map<string, int> mp;
        for (int i = 0; i < strs.size(); ++ i) {
            string s = strs[i];
            sort(s.begin(), s.end());
            if (mp.count(s) == 0) {
                mp[s] = ans.size();
                ans.push_back(vector<string>());
            }
            ans[mp[s]].push_back(strs[i]);
        }
        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双调欧几里得旅行商问题的最优算法设计与实现

一、背景 双调欧几里得旅行商问题&#xff08;Double Bitonic TSP&#xff09;是欧几里得旅行商问题&#xff08;Euclidean TSP&#xff09;的一个特殊版本。在标准的欧几里得旅行商问题中&#xff0c;我们需要找到一条最短的路径&#xff0c;这条路径要求访问者从一个城市出发…

图像分类——综合车辆数据集

一、重要性及意义 智能交通管理&#xff1a;车辆图像分类是智能交通系统&#xff08;ITS&#xff09;中的关键组成部分。通过对监控摄像头捕捉到的车辆图像进行自动分类&#xff0c;系统能够实时识别车辆类型、颜色、品牌等信息&#xff0c;进而实现交通流量监控、违章行为检测…

neo4j使用详解(十八、java driver使用及性能优化<高级用法>——最全参考)

Neo4j系列导航&#xff1a; neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1.依赖引入 <dependency><groupId>org.neo4j.driver</groupId><…

【剪映专业版】06音频和图片格式

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 音频格式 最常见格式&#xff1a;MP3和WAV 转换工具&#xff1a;在线转换或者格式工厂&#xff08;免费&#xff0c;支持音频、视频、图片、文档等转换&#xff0c;好工具&#xff09; 图片格式

2024国内外常用药物研发数据库(收藏备用)

几十年前&#xff0c;医药研发领域数据查询可谓是一项繁琐而复杂的工作&#xff0c;研发人员需要耗费大量的时间和精力&#xff0c;穿梭于各类纸质文献、专业期刊和实验报告中&#xff0c;寻找各类宝贵数据。然而随着科技的发展&#xff0c;众多医药专业数据库如雨后春笋般涌现…

【随笔】Git 基础篇 -- 远程与本地提交的差异 git clone(二十六)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

结型场效应晶体管(JFET)是场效应管产品之一 市场发展空间良好

结型场效应晶体管&#xff08;JFET&#xff09;是场效应管产品之一 市场发展空间良好 结型场效应晶体管&#xff0c;简称结型场效应管&#xff0c;英文简称JFET&#xff0c;是一种具有放大功能的三端有源器件&#xff0c;可以分为N沟道、P沟道两种产品&#xff0c;工作原理是通…

CSS导读 (复合选择器 下)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 2.5 伪类选择器 2.6 链接伪类选择器 2.6.1 链接伪类注意事项 2.6.2 链接伪类选择器实际开发中的写法 2.7 …

Java中队列

队列是一种常见的数据结构&#xff0c;它按照先进先出&#xff08;FIFO&#xff09;的原则管理元素。在 Java 中&#xff0c;队列通常是通过链表或数组实现的&#xff0c;不同的实现类在内部数据结构和操作上可能有所不同。 1.原理 1.数据结构&#xff1a;队列的基本数据结构…

Kafka 简单介绍

目录 一 消息队列&#xff08;MQ&#xff09; 1&#xff0c;为什么需要消息队列&#xff08;MQ 2&#xff0c;常见的 MQ 中间件 3&#xff0c;MQ 传统应用场景之异步处理 4&#xff0c;使用消息队列的好处 5&#xff0c;消息队列的两种模式 5.1点对点模式&#xf…

软件测试基础知识点汇总

1、衡量一个优秀软件的维度 质量模型&#xff1a;功能性、性能、兼容性、易用性、可靠性、安全、可维护性、可移植性。 2、软件测试流程 需求评审、计划编写、用例设计、用例执行、缺陷管理、测试报告 3、用例设计编写格式 用例编号、用例标题、项目/模块、优先级、前置条…

问题、目标与实现

这是2022年初写的。 目录 一、要点 二、难点 ​编辑 三、痛点 四、近点 五、远点 ​编辑 六、细点 6.1 裸机构建 6.1.1 资源、人员、工时 6.1.2 说明 6.2 文档整理 6.2.1 资源、人员、工时 6.2.3 说明 6.3 项目助理 6.4 独立测试环境、演示环境和压力测试 6.5 SC…

如何选好一款护眼大路灯?选落地灯必备的6个技巧

近年来学生近视的现象越来越严重了&#xff0c;而且近视的年龄也越来越小了&#xff0c;不少还没开始上小学的孩子&#xff0c;就已经戴上了厚厚的近视眼镜。而那些高年级的学生更是近视的重灾区&#xff0c;不仅每天需要高强度的学习和长时间用眼&#xff0c;甚至晚上都还需要…

运动耳机哪个牌子好?五大高分机型大力推荐

对于热爱运动的朋友们来说&#xff0c;一款合适的运动蓝牙耳机不仅能提升运动时的愉悦感&#xff0c;还能在一定程度上保证运动的安全性。但是&#xff0c;市面上的运动蓝牙耳机种类繁多&#xff0c;如何挑选一款适合自己的产品呢&#xff1f;本文将从多个角度为你分析运动蓝牙…

如何发布自己的Python库?

Python包发布 1、背景概述2、操作指南 1、背景概述 为什么我们要发布自己的Python库&#xff1f;如果你想让你的Python代码&#xff0c;通过pip install xxx的方式供所有人下载&#xff0c;那就需要将代码上传到PyPi上&#xff0c;这样才能让所有人使用 那么&#xff0c;如何发…

模拟Android系统Zygote启动流程

版权声明&#xff1a;本文为梦想全栈程序猿原创文章&#xff0c;转载请附上原文出处链接和本声明 前言&#xff1a; 转眼时间过去了10年了&#xff0c;回顾整个10年的工作历程&#xff0c;做了3年的手机&#xff0c;4年左右的Android指纹相关的工作&#xff0c;3年左右的跟传感…

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…

数字化仪:为何成为示波器的理想替代品?——PCIe8910M

在现代科技领域&#xff0c;数字化仪逐渐成为示波器的理想替代品。数字化仪具备诸多特点&#xff0c;使其在多个应用场景下表现出色&#xff0c;逐渐取代传统的示波器。本期文章将探讨数字化仪相对于示波器的优势&#xff0c;以及其哪些特点使其成为示波器的理想替代品。 简介…

AI时代的计算核心,你了解多少?

CPU是中央处理单元&#xff0c;那么GPU是什么呢&#xff1f; CPU的作用是计算机的运算核心和控制核心&#xff0c;GPU作用是什么呢&#xff1f; CPU的大小叫着内存大小&#xff0c;那GPU的大小叫什么呢&#xff1f; 下面我们来聊聊GPU 说起GPU&#xff0c;先来看看我们更为…

将Ubuntu18.04默认的python3.6升级到python3.8

1、查看现有的 python3 版本 python3 --version 2、安装 python3.8 sudo apt install python3.8 3、将 python3.6 和 3.8 添加到 update-alternatives sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --insta…