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(即汉明重量)。该方法的实现如下:
- 首先定义了一个整数ret来存储最终的结果(即汉明重量),并初始化为0。
- 然后使用一个for循环遍历0到31共32位(32位无符号整数的位数)。
- 在循环中,通过将1左移i位(1 << i)来生成一个只有第i位为1的数,然后与输入的n进行按位与运算(n & (1 << i))。
- 如果按位与的结果不为0(即第i位为1),则将ret递增1。
- 最后返回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;}
};
相关文章:
leetcode秋招冲刺 (专题16--18)
专题16:分治 题目169:多数元素(YES) 解题思路:使用哈希表可以统计出现次数的性质,直接统计就行。 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊…...
学懂C#编程:实用方法——string字符串指定连接符拼接之 string.Join 的详细用法
在C#中,string.Join 方法用于将一个字符串数组或集合中的元素连接成一个单一的字符串,并在每个元素之间插入指定的分隔符。这个方法非常有用,特别是在需要将多个字符串合并成一个字符串时。以下是 string.Join 方法的详细用法: 方…...

Javascript常见数据结构和设计模式
在JavaScript中,常见的数据结构包括两大类:原始数据类型(Primitive Types)和对象类型(Object Types)。对象类型又可以进一步细分为多种内置对象、数组、函数等。下面是一些JavaScript中常见的数据结构&…...
【ChatGPT】全面解析 ChatGPT:从起源到未来
ChatGPT 是由 OpenAI 开发的一个基于 GPT(Generative Pre-training Transformer)架构的聊天机器人。通过自然语言处理(NLP)技术,ChatGPT 能够理解和生成语言,与人类进行对话。本文将深入探讨其起源、发展、…...

html+css+js贪吃蛇游戏
贪吃蛇游戏🕹四个按钮控制方向🎮 源代码在图片后面 点赞❤️关注🙏收藏⭐️ 互粉必回🙏🙏😍😍😍 源代码📟 <!DOCTYPE html> <html lang"en"&…...

新手必学:掌握Excel中这些常用公式,轻松提升数据处理能力
各位同学好,今天和大家来分享几个常用函数公式的典型用法。 1、提取指定条件的不重复名单 如下图所示,某公司课程比赛,同一员工有多个比赛项目。希望从左侧的列表中,提取出财务部的参赛人员名单。F2单元格输入以下公式࿰…...

经济寒冬:竞品凶猛,你的产品如何求生?
那些年曾被竞品干掉的产品 1997年到2010年左右是国内互联网行业的快速发展和多元化发展的时期,这一时期涌现出来一大批优秀的产品,市场竞争越来越激烈。苹果 在20 世纪 80 年代,乔布斯的苹果电脑,在当时可是PC行业的老大…...

信号量——Linux并发之魂
欢迎来到 破晓的历程的 博客 引言 今天,我们继续学习Linux线程本分,在Linux条件变量中,我们对条件变量的做了详细的说明,今天我们要利用条件变量来引出我们的另一个话题——信号量内容的学习。 1.复习条件变量 在上一期博客中&…...
自动驾驶中的逆透视变换(Inverse Perspective Mapping,IPM)详解
前言 IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解图像中的场景。比如在行车中的车道线检测,泊车中的常见…...

Python地震波逆问题解构算法复杂信号分析
🎯要点 🎯时域、时频域以及时间和频率相关联偏振特性分析三种算法 | 🎯时域波参数估计算法 | 🎯机器学习模型波形指纹分析算法 | 🎯色散曲线和频率相关波分析算法 | 🎯动态倾斜校正算法 | 🎯声…...

C语言 -- 深入理解指针(二)
C语言 -- 深入理解指针(二) 1. 数组名的理解2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组8. 字符指针变量9. 数组指针变量2.1数组指针变量是什么?2.2 数组指针变量怎么初始化 10. 二维…...
HTTP协议详解
HTTP协议详解 一、HTTP协议概述二、网络基础与HTTP2.1 TCP/IP协议2.2 发送HTTP请求过程2.3 HTTP请求的组成部分 三、HTTP报文HTTP请求报文HTTP响应报文 结语 一、HTTP协议概述 HTTP,即超文本传输协议(Hypertext Transfer Protocol)ÿ…...
一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”
执笔 | 尼 奥 编辑 | 扬 灵 作为土地面积全国第5、人口总数全国第3、GDP全国第6的产酒、销酒大省,四川酒类消费总额已达800亿元,其中白酒市场规模达到500亿元。 近年来,随着省外名酒提升对四川市场重视,其市场份额也从20年前的3%…...

土豆炒肉做法
菜单:土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程: 洗土豆,削皮,擦成条,用凉水过滤两遍淀粉,顺便放个燥里洗肉,切成条,按照生抽、酱油、淀粉、…...
VPS拨号服务器:独享的高效与安全
在当今互联网高速发展的时代,虚拟私人服务器(VPS)已成为许多企业和个人用户托管网站、应用程序的首选。特别是带有拨号功能的VPS服务器,以其独特的优势受到广泛关注。本文将深入探讨VPS拨号服务器的独享特性,以及它如何…...

网络安全设备——防火墙
网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释: 一、定义与基本概念 定义:防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的…...
Redis 管道技术
Redis 管道技术 引言 Redis,作为一个高性能的键值存储系统,被广泛应用于各种场景,如缓存、消息队列等。为了进一步提高Redis的处理能力和效率,Redis管道技术应运而生。本文将深入探讨Redis管道技术的原理、应用及其优势。 什么是Redis管道技术 Redis管道技术是一种允许…...

使用vue3-treeselect问题
1.当vue3-treeselect是单选时,使用watch监听绑定value,无法监听到值清空 对照后将:value改为v-model,如图 2.使用vue3-treeselect全部清空按钮如何置空select的值,使用watch监听 多选:pageInfo.officeName(val) {// …...

每日直播分享车载知识:硬件在环、UDS诊断、OTA升级、TBOX测试、CANoe、ECU刷写、CAN一致性测试:物理层、数据链路层等
每日直播时间:(进腾讯会议方式:QazWsxEdc_2010) 周一到周五:20:00-23:00(讲一个小时,实操两个小时) 周六与周日:9:00-17:0…...

flex布局---子元素未设置高度,默认与父元素同高---侧轴方向的拉伸
父元素未设置固定高度,由子元素高度撑开,并给父元素开启 flex 布局,成为伸缩容器。 父元素中有三个子元素,为伸缩项目,三个伸缩项目都未指定高度,div.inner1 的高度由内容撑开,div.inner2 和 d…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...