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

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;}
};

相关文章:

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

专题16&#xff1a;分治 题目169&#xff1a;多数元素&#xff08;YES&#xff09; 解题思路&#xff1a;使用哈希表可以统计出现次数的性质&#xff0c;直接统计就行。 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊…...

学懂C#编程:实用方法——string字符串指定连接符拼接之 string.Join 的详细用法

在C#中&#xff0c;string.Join 方法用于将一个字符串数组或集合中的元素连接成一个单一的字符串&#xff0c;并在每个元素之间插入指定的分隔符。这个方法非常有用&#xff0c;特别是在需要将多个字符串合并成一个字符串时。以下是 string.Join 方法的详细用法&#xff1a; 方…...

Javascript常见数据结构和设计模式

在JavaScript中&#xff0c;常见的数据结构包括两大类&#xff1a;原始数据类型&#xff08;Primitive Types&#xff09;和对象类型&#xff08;Object Types&#xff09;。对象类型又可以进一步细分为多种内置对象、数组、函数等。下面是一些JavaScript中常见的数据结构&…...

【ChatGPT】全面解析 ChatGPT:从起源到未来

ChatGPT 是由 OpenAI 开发的一个基于 GPT&#xff08;Generative Pre-training Transformer&#xff09;架构的聊天机器人。通过自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;ChatGPT 能够理解和生成语言&#xff0c;与人类进行对话。本文将深入探讨其起源、发展、…...

html+css+js贪吃蛇游戏

贪吃蛇游戏&#x1f579;四个按钮控制方向&#x1f3ae; 源代码在图片后面 点赞❤️关注&#x1f64f;收藏⭐️ 互粉必回&#x1f64f;&#x1f64f;&#x1f60d;&#x1f60d;&#x1f60d; 源代码&#x1f4df; <!DOCTYPE html> <html lang"en"&…...

新手必学:掌握Excel中这些常用公式,轻松提升数据处理能力

各位同学好&#xff0c;今天和大家来分享几个常用函数公式的典型用法。 1、提取指定条件的不重复名单 如下图所示&#xff0c;某公司课程比赛&#xff0c;同一员工有多个比赛项目。希望从左侧的列表中&#xff0c;提取出财务部的参赛人员名单。F2单元格输入以下公式&#xff0…...

经济寒冬:竞品凶猛,你的产品如何求生?

那些年曾被竞品干掉的产品 1997年到2010年左右是国内互联网行业的快速发展和多元化发展的时期&#xff0c;这一时期涌现出来一大批优秀的产品&#xff0c;市场竞争越来越激烈。苹果 在20 世纪 80 年代&#xff0c;乔布斯的苹果电脑&#xff0c;在当时可是PC行业的老大&#xf…...

信号量——Linux并发之魂

欢迎来到 破晓的历程的 博客 引言 今天&#xff0c;我们继续学习Linux线程本分&#xff0c;在Linux条件变量中&#xff0c;我们对条件变量的做了详细的说明&#xff0c;今天我们要利用条件变量来引出我们的另一个话题——信号量内容的学习。 1.复习条件变量 在上一期博客中&…...

自动驾驶中的逆透视变换(Inverse Perspective Mapping,IPM)详解

前言 IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解图像中的场景。比如在行车中的车道线检测,泊车中的常见…...

Python地震波逆问题解构算法复杂信号分析

&#x1f3af;要点 &#x1f3af;时域、时频域以及时间和频率相关联偏振特性分析三种算法 | &#x1f3af;时域波参数估计算法 | &#x1f3af;机器学习模型波形指纹分析算法 | &#x1f3af;色散曲线和频率相关波分析算法 | &#x1f3af;动态倾斜校正算法 | &#x1f3af;声…...

C语言 -- 深入理解指针(二)

C语言 -- 深入理解指针&#xff08;二&#xff09; 1. 数组名的理解2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组8. 字符指针变量9. 数组指针变量2.1数组指针变量是什么&#xff1f;2.2 数组指针变量怎么初始化 10. 二维…...

HTTP协议详解

HTTP协议详解 一、HTTP协议概述二、网络基础与HTTP2.1 TCP/IP协议2.2 发送HTTP请求过程2.3 HTTP请求的组成部分 三、HTTP报文HTTP请求报文HTTP响应报文 结语 一、HTTP协议概述 HTTP&#xff0c;即超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;&#xff…...

一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”

执笔 | 尼 奥 编辑 | 扬 灵 作为土地面积全国第5、人口总数全国第3、GDP全国第6的产酒、销酒大省&#xff0c;四川酒类消费总额已达800亿元&#xff0c;其中白酒市场规模达到500亿元。 近年来&#xff0c;随着省外名酒提升对四川市场重视&#xff0c;其市场份额也从20年前的3%…...

土豆炒肉做法

菜单&#xff1a;土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程&#xff1a; 洗土豆&#xff0c;削皮&#xff0c;擦成条&#xff0c;用凉水过滤两遍淀粉&#xff0c;顺便放个燥里洗肉&#xff0c;切成条&#xff0c;按照生抽、酱油、淀粉、…...

VPS拨号服务器:独享的高效与安全

在当今互联网高速发展的时代&#xff0c;虚拟私人服务器&#xff08;VPS&#xff09;已成为许多企业和个人用户托管网站、应用程序的首选。特别是带有拨号功能的VPS服务器&#xff0c;以其独特的优势受到广泛关注。本文将深入探讨VPS拨号服务器的独享特性&#xff0c;以及它如何…...

网络安全设备——防火墙

网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释&#xff1a; 一、定义与基本概念 定义&#xff1a;防火墙是指设置在不同网络&#xff08;如可信任的企业内部网和不可信的公共网&#xff09;或网络安全域之间的一系列部件的…...

Redis 管道技术

Redis 管道技术 引言 Redis,作为一个高性能的键值存储系统,被广泛应用于各种场景,如缓存、消息队列等。为了进一步提高Redis的处理能力和效率,Redis管道技术应运而生。本文将深入探讨Redis管道技术的原理、应用及其优势。 什么是Redis管道技术 Redis管道技术是一种允许…...

使用vue3-treeselect问题

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

每日直播分享车载知识:硬件在环、UDS诊断、OTA升级、TBOX测试、CANoe、ECU刷写、CAN一致性测试:物理层、数据链路层等

每日直播时间&#xff1a;&#xff08;进腾讯会议方式&#xff1a;QazWsxEdc_2010&#xff09; 周一到周五&#xff1a;20&#xff1a;00-23&#xff1a;00&#xff08;讲一个小时&#xff0c;实操两个小时&#xff09; 周六与周日&#xff1a;9&#xff1a;00-17&#xff1a;0…...

flex布局---子元素未设置高度,默认与父元素同高---侧轴方向的拉伸

父元素未设置固定高度&#xff0c;由子元素高度撑开&#xff0c;并给父元素开启 flex 布局&#xff0c;成为伸缩容器。 父元素中有三个子元素&#xff0c;为伸缩项目&#xff0c;三个伸缩项目都未指定高度&#xff0c;div.inner1 的高度由内容撑开&#xff0c;div.inner2 和 d…...

资源分享—2021版三调符号库

汇总整理平台软件支持过程中客户项目提供的各类资源&#xff08;包括但不限于符号库、地图模板等&#xff09;&#xff0c;在客户允许情况下进行集团内分享。 本次分享新版国土空间规划【三调符号库&#xff08;2021版&#xff09;】&#xff0c;提供SuperMap格式符号库下载。 …...

解决selenium手动下载驱动问题

解决selenium手动下载驱动问题 每次都需要手动下载驱动很头疼&#xff0c;今天发现一个可以自动下载最新驱动的包webdriver_manager&#xff0c;挺不错的 安装依赖包 pip install selenium pip install webdriver_manager from selenium import webdriver from selenium.webdr…...

使用fifo IP核,给fifo写数据,当检测到ALMOST_EMPTY时,为什么不能立即赋值

这涉及到FIFO&#xff08;先入先出缓冲器&#xff09;的内部工作机制和时序考虑。让我详细解释为什么在检测到ALMOST_EMPTY信号时不能立即向FIFO写入数据。 ALMOST_EMPTY信号的特性&#xff1a; ALMOST_EMPTY是一个预警信号&#xff0c;表示FIFO中的数据量已经接近空。这个信号…...

【Python123题库】#汽车迷 #编写函数输出自除数 #身份证号基本信息

禁止转载&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_45801887/article/details/140080109 参考教程&#xff1a;B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 汽车迷编写函数输出自除数身份证号基本信息 汽车…...

普通人怎么利用GPT赚钱之SEO优化内容

如何利用GPT撰写SEO优化内容:全面指南 在当今的数字化世界,搜索引擎优化(SEO)是提升网站流量和曝光率的关键。高质量的SEO优化内容不仅可以提高搜索引擎排名,还能吸引更多潜在客户。GPT(生成预训练变换器)作为一种先进的人工智能工具,可以大大提升SEO内容创作的效率和…...

LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像

54. 螺旋矩阵 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> vec;if(matrix.empty())return vec;int left0;int right matrix[0].size()-1;int up0;int down matrix.size()-1;while(true) {for(i…...

景联文科技打造高质量图文推理问答数据集,赋能大语言模型提升推理能力

大语言模型在处理推理任务时&#xff0c;不同于人类能够反思错误并修正思维路径&#xff0c;当它遇到自身知识盲区时&#xff0c;缺乏自我校正机制&#xff0c;往往导致输出结果不仅无法改善&#xff0c;反而可能变得更不准确。 需要依赖外部的知识库和推理能力来克服其在理解和…...

用网络编程完成windows和linux跨平台之间的通信(服务器)

服务器代码逻辑&#xff1a; 服务器功能 创建 Socket&#xff1a; 服务器首先创建一个 Socket 对象&#xff0c;用于进行网络通信。通常使用 socket() 函数创建。 绑定&#xff08;Bind&#xff09;&#xff1a; 服务器将 Socket 绑定到一个特定的 IP 地址和端口号上。这是通过…...

力扣3148.矩阵中的最大得分

力扣3148.矩阵中的最大得分 类似二维前缀和 枚举右下角 求(i,j) - (0,0)的子矩阵的最小值每次与当前点作差 求答案 class Solution {public:int maxScore(vector<vector<int>>& grid) {int res INT_MIN;int m grid.size(),n grid[0].size();vector<ve…...

解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决

Druid版本1.1.9报错Caused by: java.sql.SQLException: sql injection violation, syntax error: TODO IDENTIFIER : CREATE TEMPORARY TABLE temp_ball_classify (id int8 NOT NULL,create_time TIMESTAMP,create_by VARCHAR,classify_name VARCHAR) 代码如下&#xff1a; 测…...