leetcode秋招冲刺 (专题16--18)

专题16:分治

题目169:多数元素(YES)

  • 解题思路:使用哈希表可以统计出现次数的性质,直接统计就行。

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

class Solution {
public:int majorityElement(vector<int>& nums) {//使用哈希表显然是最容易的,用哈希表可以计数的功能unordered_map<int,int>map;for(int i=0;i<nums.size();i++){map[nums[i]]++;if(map[nums[i]]>(nums.size()/2)){return nums[i];}}return 0;}
};

题目159:库存管理|||(YES)

  • 使用冒泡排序算法

仓库管理员以数组 stock 形式记录商品库存表,其中 stock[i] 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量,返回 顺序不限。

class Solution {
public://冒泡排序void boblle_sort(vector<int>&stock){for(int i=0;i<stock.size()-1;i++){for(int j=0;j<stock.size()-i-1;j++){if(stock[j]>stock[j+1]){int temp=stock[j];stock[j]=stock[j+1];stock[j+1]=temp;}}}}vector<int> inventoryManagement(vector<int>& stock, int cnt) {//排序boblle_sort(stock);vector<int>ans;for(int i=0;i<cnt;i++){ans.push_back(stock[i]);}return ans;}
};

题目161:连续天数的最高销售额(NO)

  • 解题思路:就是连续的扫描每次再原来的基础上叠加出最大值

某公司每日销售额记于整数数组 sales,请返回所有 连续 一或多天销售额总和的最大值。

要求实现时间复杂度为 O(n) 的算法。

class Solution {
public:int maxSales(vector<int>& sales) {int pre = 0, maxAns = sales[0];//就是连续的扫描每次再原来的基础上叠加出最大值for (const auto &x: sales) {pre = max(pre + x, x);maxAns = max(maxAns, pre);//记录最大值}return maxAns;}
};

题目158:库存管理||(YES)

  • 解题思路:哈希表

仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。

class Solution {
public:int inventoryManagement(vector<int>& stock) {//哈希表unordered_map<int,int>map;for(int i=0;i<stock.size();i++){map[stock[i]]++;if(map[stock[i]]>(stock.size()/2)){return stock[i];}}return 0;}
};

题目142:训练计划(YES)

  • 解题思路:这题依旧非常熟悉了,使用一个新的head作为新链表,然后循环比较l1和l2就行了。

给定两个以 有序链表 形式记录的训练计划 l1、l2,分别记录了两套核心肌群训练项目编号,请合并这两个训练计划,按训练项目编号 升序 记录于链表并返回。

注意:新链表是通过拼接给定的两个链表的所有节点组成的。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* trainningPlan(ListNode* l1, ListNode* l2) {//这题原来做过,需要使用一个head指针代码返回的新的链表头结点ListNode*head=new ListNode();ListNode*temp=head;//开始遍历操作while(l1!=nullptr&&l2!=nullptr){if(l1->val<=l2->val){temp->next=l1;l1=l1->next;temp=temp->next;}else if(l2->val<l1->val){temp->next=l2;l2=l2->next;temp=temp->next;}}if(l1!=nullptr){temp->next=l1;}else{temp->next=l2;}return head->next;}
};

专题17:位运算

题目136:只出现一次的数字(YES)

  • 解题思路:哈希表

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

class Solution {
public:int singleNumber(vector<int>& nums) {//使用哈希表unordered_map<int,int>map;for(int i=0;i<nums.size();i++){map[nums[i]]++;}for(int i=0;i<nums.size();i++){if(map[nums[i]]==1){return nums[i];}}return 0;}
};
  • 方法二:使用异或运算,切记异或可以找出出现一次的数字
class Solution {
public:int singleNumber(vector<int>& nums) {//使用异或运算int ans=nums[0];for(int i=1;i<nums.size();i++){ans^=nums[i];}return ans;}
};

题目191:位1的个数(NO)

  • 使用&与运算和<<左移运算

编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中
设置位
的个数(也被称为汉明重量)。

class Solution {
public:int hammingWeight(int n) {int ans=0;for(int i=0;i<32;i++){//这里1<<i就会生成第i位为1的二进制数if(n&(1<<i)){ans++;}}return ans;}
};
  • 代码解释

这段代码是一个C++的类Solution,其中包含一个公有方法hammingWeight,用于计算一个32位无符号整数中有多少个位是1(即汉明重量)。该方法的实现如下:

  1. 首先定义了一个整数ret来存储最终的结果(即汉明重量),并初始化为0。
  2. 然后使用一个for循环遍历0到31共32位(32位无符号整数的位数)。
  3. 在循环中,通过将1左移i位(1 << i)来生成一个只有第i位为1的数,然后与输入的n进行按位与运算(n & (1 << i))。
  4. 如果按位与的结果不为0(即第i位为1),则将ret递增1。
  5. 最后返回ret作为结果,即32位无符号整数n中为1的位的个数。

这段代码利用位运算的特性,逐位检查n的每一位是否为1,从而计算出n的汉明重量。

  • 为何1<<i就可生成第i位是1的二进制

在C++中,<< 是左移位运算符,其功能是将一个数的二进制表示向左移动指定的位数。当我们使用 1 << i 时,表示将数字1的二进制表示向左移动i位,其效果是生成一个只有第i位为1的二进制数。

举个例子,当i=0时,1 << 0 就是将二进制数1向左移动0位,结果为1,二进制表示为00000001;当i=1时,1 << 1 就是将二进制数1向左移动1位,结果为2,二进制表示为00000010;依此类推,当i=2时,结果为4,二进制表示为00000100,依此类推。

因此,通过1 << i,我们可以生成一个只有第i位为1的二进制数(其余位为0),用于与原始数字进行按位与运算,以判断原始数字的第i位是否为1。

  • 拓展:打印二进制数的方法
#include <iostream>
#include <bitset> // 需要包含头文件 <bitset> 来使用 bitset 类void printBinary(int n) {std::bitset<32> bs(n); // 使用 bitset 类来表示32位二进制std::cout << "Binary representation of " << n << " is: " << bs << std::endl;
}int main() {int num = 10; // 需要打印的整数printBinary(num); // 调用打印方法return 0;
}

题目268:丢失的数字(YES)

  • 先排序,再遍历查找哪个丢失了。

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

class Solution {
public:int missingNumber(vector<int>& nums) {//先排序sort(nums.begin(),nums.end());int ans=0;for(int i=0;i<nums.size();i++){if(ans!=nums[i]){return ans;}ans++;}return ans;}
};

题目405:数字转换为十六进制(NO)

  • 解题思路:位运算

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。

注意:

十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。
给定的数确保在32位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。

  • 官方题解
class Solution {
public:string toHex(int num) {if (num == 0) {return "0";}string sb;for (int i = 7; i >= 0; i --) {int val = (num >> (4 * i)) & 0xf;if (sb.length() > 0 || val > 0) {char digit = val < 10 ? (char) ('0' + val) : (char) ('a' + val - 10);sb.push_back(digit);}}return sb;}
};

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

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

相关文章

ESIX配置备份和恢复

ESIX虽然重装很快&#xff0c;但是原本配置就丢失了&#xff0c;在硬件不变的情况下&#xff0c;可以使用配置备份和配置恢复的方法。 1、备份配置 1.1、执行以下两条命令 vim-cmd hostsvc/firmware/sync_configvim-cmd hostsvc/firmware/backup_config如下图&#xff0c;只需…

2024年江苏省研究生数学建模科研创新实践大赛赛题分享-B题

火箭烟幕弹运用策略优化 随着光电技术的发展&#xff0c;现代战争中光电制导对战场重要目标的生存构成了极大威胁。而烟幕在对抗红外制导、激光制导、毫米波探测等光电武器方面具有显著成效。烟幕主要由固体和液体微粒混合而成&#xff0c;它通过散射或吸收的方式&#xff0c;干…

7月6日 VueConf 技术大会即将在深圳举办

7月6日&#xff0c;VueConf 2024 即将在深圳召开&#xff0c;本次大会正值 Vue.js 十周年&#xff0c;旨在聚焦 Vue.js 社区的成员&#xff0c;分享最新的技术动态、经验以及创新实践。 本次参与 VueConf 大会的是来自全球 Vue.js 核心团队成员、行业专家及前端开发者。其中&a…

Elasticsearch:Node.js ECS 日志记录 - Winston

这是继上一篇文章 “Elasticsearch&#xff1a;Node.js ECS 日志记录 - Pino” 的续篇。我们继续上一篇文章来讲述使用 Winston 包来针对 Node.js 应用生成 ECS 向匹配的日子。此 Node.js 软件包为 winston 记录器提供了格式化程序&#xff0c;与 Elastic Common Schema (ECS) …

为什么要做代码审查?代码审查应该如何进行?代码审查初体验,大家一起来找茬

文章目录 前言示例1示例2示例3示例4总结 前言 “代码审查”&#xff08;Code Review&#xff09;是一种软件开发过程中&#xff0c;团队成员之间相互检查、评估和改进代码的实践。这一过程通常涉及对代码质量、可维护性、性能、安全性以及是否符合编程规范或项目约定的标准进行…

模电基础 - 放大电路的频率响应

目录 一. 简介 二. 频率响应的基本概念 三. 波特图 四. 晶体管的高频等效模型 五. 场效应管的高频等效模型 六. 单管放大电路的频率响应 七.多级放大电路的频率响应 八. 频率响应与阶跃响应 一. 简介 放大电路的频率响应是指在输入不同频率的正弦信号时&#xff0c;电路…

Linux基础-管道命令

管道命令 一、概述二、常见用法1. 统计某个目录下的的文件个数2. 对目录下的排序并抓取关键词保存到文件中3. 获取一个目录下的所有子目录名称 一、概述 管道命令是非常有用的工具。在日常工作中用的非常多&#xff0c;他其实是一个并连命令的高级版。用一句话来概括 "把…

【MySQL】MySQL连接池原理与简易网站数据流动是如何进行

MySQL连接池原理与简易网站数据流动是如何进行 1.MySQL连接池原理2.简易网站数据流动是如何进行 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f60…

SSM高校学生综合测评系统-计算机毕业设计源码16154

摘要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个BS 结构的高校学生综合测评系统,会使高校学生综合测评系统工作系统化、规范化,也会提高高校学生综合测评系统平台形象,提高管理效率。 本学生综合测评系统是针对目前高校学生…

君方智能设计平台-对象持久化技术方案

1.背景介绍 1.1序列化功能 序列化是将复杂的图形对象、数据结构或对象转换成一种可被存储、传输或分享的格式的过程。这个格式通常是二进制或文本形式&#xff0c;能够轻松地保存在文件中或通过网络发送到其他应用程序。序列化的目的是将数据持久化&#xff0c;使其在不同时间…

Java中的消息中间件与异步通信实现

Java中的消息中间件与异步通信实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 消息中间件和异步通信在现代软件系统中扮演着重要角色。它们可以帮助解耦系…

【代码随想录算法训练营第六十二天|卡码网108.冗余连接、109.冗余连接II】

文章目录 108.冗余连接109.冗余连接II 108.冗余连接 就是对输入进来的边判断是否在一个并查集中&#xff0c;在的话就把这个删除了&#xff0c;不再就加入并查集中。 n int(input()) father [0] * (n1) def init():for i in range(n1):father[i] idef find(u):if father[u…

服务器本地部署文件服务器minio

minio类似于阿里云的OSS&#xff0c;为不方便把图、文、日志等形式的文件保存在公有云上的&#xff0c;可以在自己的服务器上部署文件服务器 看过本人前几个文章的&#xff0c;使用docker就会很快上手部署&#xff0c;直接上所有代码 #添加镜像 docker search minio docker p…

干货丨做新媒体运营,你必须了解的5大平台规则

5大平台必看规则 01.小红书 平台特性 小红书是一个以生活方式分享为主的“社区&#xff0b;电商”平台。 其中80%都是女性用户拥有精准的女性流量&#xff0c;是美妆护肤、潮流包包的种草地&#xff01;小红书整体的内容围绕的是精致、极简、自律、丰富有趣的生活。 用户画像…

怎么给电子文档批量盖骑缝章或公章?

怎么给电子文档批量盖骑缝章或公章?假如你有100个PDF电子文档要同时盖缝章&#xff0c;如果不借助专业的盖电子骑缝章软件&#xff0c;还真不好干。下面讲述如何利用e-章宝批量盖电子骑缝章。 1.在软件中导入待批量盖章的PDF文件 如下图&#xff0c;在“待盖章PDF文件”区域…

aws slb

NLB 目标组 Target is in an Availability Zone that is not enabled for the load balancer 解决&#xff1a; https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html 负载均衡器添加 后端EC2 所在的vpc网段即可。…

谨慎投稿!这本EI期刊正在被“劫持”!

Journsl ofTisniin lniversity Seience and Technology《天津大学学报&#xff08;自然科学与工程技术版&#xff09;》创刊于l955年&#xff0c;月刊&#xff0c;全国核心期刊&#xff0c;天津市一级期刊。该刊是由天津大学主办的综合性学术刊物&#xff0c;主要刊登自然科学和…

这款拖拽式大屏设计神器,太惊艳了!收藏吧!

概念​ 可视化大屏是当今信息时代的一种重要技术工具&#xff0c;它以大屏幕为显示终端&#xff0c;通过图形、图表、地图等形式将大量数据和信息直观地呈现出来&#xff0c;帮助用户更好地理解和分析数据。 JVS智能BI的可视化大屏从界面布局、色彩搭配&#xff0c;到图表类型…

一个生成4种UUID的Typescript代码(不依赖任何库)

最近写个uni-app前端&#xff0c;由于要兼容小程序环境&#xff0c;标准几个npm里的库都不能用了。看了下网上的uuid js库&#xff0c;再加上short-uuid的源码。一并输入GPT敲打了几个来回后&#xff0c;得到这样的代码&#xff1a; uuid.ts enum UUIDFormat {CookieBase90,F…

大模型推理加速调研(框架、方法)

大模型推理加速的目标是高吞吐量、低延迟。吞吐量为一个系统可以并行处理的任务量。延时&#xff0c;指一个系统串行处理一个任务时所花费的时间。调研了一些大模型推理的框架。 框架llama.cpprtp-llmvllmTensorRT-LLMLMDeployfastllm语言Chttps://github.com/ggerganov/llama…