代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数

 哈希表理论基础 

建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。  

什么时候想到用哈希法,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。  这句话很重要,大家在做哈希表题目都要思考这句话。 

文章讲解:代码随想录

 242.有效的字母异位词 

建议: 这道题目,大家可以感受到 数组 用来做哈希表 给我们带来的遍历之处。 

题目链接/文章讲解/视频讲解: 代码随想录

 349. 两个数组的交集 

建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0 <= nums1[i], nums2[i] <= 1000 条件,所以使用数组也可以了,不过建议大家忽略这个条件。 尝试去使用set。 

题目链接/文章讲解/视频讲解:代码随想录

 202. 快乐数 

建议:这道题目也是set的应用,其实和上一题差不多,就是 套在快乐数一个壳子 

题目链接/文章讲解:代码随想录

 1. 两数之和 

建议:本题虽然是 力扣第一题,但是还是挺难的,也是 代码随想录中 数组,set之后,使用map解决哈希问题的第一题。 

建议大家先看视频讲解,然后尝试自己写代码,在看文章讲解,加深印象。 

题目链接/文章讲解/视频讲解:代码随想录


        使用哈希法,用数组来做哈希表。字符为key,建立key与index的映射,然后value为key出现的次数。

映射关系index=key-‘a’。

c++代码示例如下时间复杂度O(n)、空间复杂度O(1)

bool isAnagram(string s, string t) {
	int record[26] = { 0 };
	for (int i = 0; i < s.size(); i++) {
		record[s[i] - 'a']++;
	}
	for (int i = 0; i < t.size(); i++) {
		record[t[i] - 'a']--;
	}
	for (int i = 0; i < 26; i++) {
		if (record[i] != 0) {
			return false;
		}
	}
	return true;
}

        输出结果中每一个元素都是唯一的,我们使用unordered_set来接受结果,对于unordered_set的初始化可以使用迭代器初始化。

c++代码示例如下        时间复杂度O(n+m),空间复杂度O(n)

vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
	unordered_set<int> result;
	unordered_set<int> nums_set(nums1.begin(), nums1.end());
	for (int num : nums2) {
		if (nums_set.find(num) != nums_set.end()) {
			result.insert(num);
		}
	}
	return vector<int>(result.begin(), result.end());
}

        发现题目给的数据的大小0<=nums1[i],nums2[i]<=1000,可以使用大小为1001的数组来做哈希表,数字作为key->index,出现次数为value。还是用unordered_set来接受结果。

c++代码示例如下

vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
	unordered_set<int> result;
	int hash[1001] = { 0 };
	for (int num : nums1) {
		hash[num] = 1;
	}
	for (int num : nums2) {
		if (hash[num] == 1) {
			result.insert(num);
		}
	}
	return vector<int>(result.begin(), result.end());
}

        难点就是意识到无限循环就是sum重复出现

c++代码示例如下

int getSum(int n) {
	int sum = 0;
	while (n) {
		sum += (n % 10) * (n % 10);
		n /= 10;
	}
	return sum;
}
bool isHappy(int n) {
	unordered_set<int> set;
	while (1) {
		int sum = getSum(n);
		if (sum == 1) {
			return true;
		}
		if (set.find(sum) != set.end()) {
			return false;
		}
		else {
			set.insert(sum);
		}
		n = sum;
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大图切片预览

文章目录 前言处理流程完整代码前端预览 前言 最近有需求&#xff0c;前端要预览百兆以上的大图&#xff0c;这直接访问应该就不太行了&#xff0c;系统打开都在加载好一会儿&#xff0c;刚好从事的又是 gis 行业&#xff0c;于是打算用类似加载地图的方式来切片加载大图。这里…

视频做成二维码查看?多格式视频二维码生成器的使用方法

现在音视频是工作和生活中经常需要使用的一种内容表现形式&#xff0c;很多人都通过这种方式来查看视频内容&#xff0c;比如产品介绍、使用说明、安装教程等。通过一个二维码就可以来承载视频内容&#xff0c;与传统的方式相比拥有更快的内容传播速度&#xff0c;简化用户获取…

04.SpringCloud网关-gateway

1.Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…

Stm32cube keil5配置串口printf 蓝牙打印不出来

1.检查cube里面波特率是否与AT蓝牙设置一致 2.keil里面设置是否打开Use MicroLIB 3、stm32cube是否开启串口中断 4.检测线路是否接触不良&#xff0c;读写线插反等。

这一次技术学习分享,超过苦读30本书

同学们&#xff0c;做个问卷调查&#xff0c;你参加了这次由腾讯云主办的第四期“云梯计划”了不&#xff1f; “云梯计划”已连续举办三年&#xff0c;免费为超过1万名大学生提供了腾讯云认证培训和考试名额&#xff0c;帮助其提升就业竞争力。 想要得到免费的系统性、实战性…

SpringBoot集成 Websocket 实现服务与客户端进行消息发送和接收

介绍 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。 效果 客户端效果 服务端日志 pom依赖 <!-- websocket --> <dependency><groupId>org.springfram…

APM32F035有感矢量控制方案

一、先来几句废话 首先这两年公司越来越多的开始使用国产的MCU&#xff0c;用过GD32、AT32、APM32等等&#xff0c;目前稳定使用的是APM32,包括身边朋友工作室&#xff0c;也开始从TI、STM、NXP换成APM32。上个月有幸拿到APM32F035电路控制板&#xff0c;非常感谢面包板社区提供…

Pytest自动化测试框架

1、pytest简介 pytest是Python的一种单元测试框架&#xff0c;与python自带的unittest测试框架类似&#xff0c;但是比unittest框架使用起来更简洁&#xff0c;效率更高。 执行测试过程中可以将某些测试跳过&#xff0c;或者对某些预期失败的case标记成失败能够支持简单的单元…

服务器网卡介绍

本篇文章对服务器网卡进行基础介绍&#xff0c;包括基本概念、网卡厂商及网卡绑定策略等。 1、基本概念 服务器网卡&#xff08;Network Interface Card&#xff09;是一种用于连接服务器与网络之间的硬件设备。它允许服务器通过网络与其他设备进行通信&#xff0c;包括传输数…

九州金榜孩子厌学原因及解决方法

厌学是根据不同类型孩子&#xff0c;表现也有差异&#xff0c;但是者都会对成绩产生很大的影响。那么作为家长&#xff0c;我们应该怎么面对不同类型孩子的厌学&#xff0c;又该怎么样去解决呢&#xff0c;我们要如何让孩子重拾学习的信心呢&#xff1f;下面&#xff0c;我们从…

如何查看崩溃日志

​ 目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1:手机设置查看崩溃日志 方式2: Xocde工具 方式3: 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四&#xff1a;控制台资源库 线上崩溃日志 线上监听crash的几种方式 方式1: 三…

SQLServer设置端口,并设置SQLServer和SQLServer Browser服务

SQLServer默认使用动态端口&#xff0c;即每次启动sqlserver.exe时&#xff0c;端口port都会动态变化。若要使用静态端口&#xff0c;比如port1433&#xff0c;则需要在SQL Server Configuration Manager(简称SSMS&#xff09;里配置。这里以SQL Server 2005 Configuration Man…

计算机基础面试题 |16.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

2024年【安全员-A证】及安全员-A证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-A证考前必练&#xff01;安全生产模拟考试一点通每个月更新安全员-A证证考试题目及答案&#xff01;多做几遍&#xff0c;其实通过安全员-A证复审模拟考试很简单。 1、【多选题】《建设工程安全生产管理条例》…

JavaScript版数据结构与算法(一)栈、队列、链表、集合、树

一、前言 为什么要学习数据结构与算法&#xff1f;最重要的就是面试要考算法&#xff0c;另外就是如果在实际工作当中&#xff0c;能够使用算法优化代码&#xff0c;会提升代码质量和运行效率&#xff0c;作为一名前端人员可能在实际中用的并不是特别多。数据结构与算法是分不…

在win10和Linux上配置SSH 无密码登录

文章目录 一、用途二、在本地机器上使用ssh-keygen产生公钥私钥对1&#xff09;在Linux (或macOS) 上产生SSH公私钥的方法2&#xff09;在win10上产生SSH公私钥的方法a&#xff09;检查windows 本地是否安装有sshb&#xff09;在本地生成SSH密钥对&#xff08;公钥和私钥&#…

Java TBA访问NetSuite Restlet时的403错误

本周有同学问为啥Java访问NetSuite Restlet时&#xff0c;按照知识会之前的文章分享&#xff0c;会一直报403 INVALID_LOGIN_ATTEMPT错误。 https://nk-community.blog.csdn.net/article/details/131399801https://nk-community.blog.csdn.net/article/details/131399801原因是…

jenkins 参数化构建过程,jenkins下拉框选择要部署项目,jenkins部署java微服务项目,jenkins部署微服务

1. jenkins部署demo 优化点&#xff1a; 选择丢弃旧的构建&#xff0c;最大个数可以选择3或者5个&#xff0c;如果微服务&#xff0c;十个jar,占用很多空间&#xff0c;多来几次部署&#xff0c;硬盘满了 2. 选择参数构建&#xff0c;需要部署哪个项目 名称可以设置为你的项目…

CANFDLog-OTL 的UDS诊断和刷写功能应用简介

随着汽车电控系统比重增加和车辆下线自动化程度的提高&#xff0c;企业生产节拍逐渐加快&#xff0c;整车下线的稳定可靠越来越依靠下线诊断系统。 下线诊断流程如下: 1.程序刷写 对控制器进行程序刷写&#xff0c;支持S19/HEX/BIN等格式 2.防盗匹配 钥匙防盗匹配功能和智能钥匙…

vue-springboot基于java的实验室安全考试系统

本系统为用户而设计制作实验室安全考试系统&#xff0c;旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的…
最新文章