力扣题目训练(12)

2024年2月5日力扣题目训练

  • 2024年2月5日力扣题目训练
    • 476. 数字的补数
    • 482. 密钥格式化
    • 485. 最大连续 1 的个数
    • 148. 排序链表
    • 164. 最大间距

2024年2月5日力扣题目训练

2024年2月5日第十二天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的。

476. 数字的补数

链接: 数字的补数
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
由题目可知,我们可以将 num二进制表示的每一位取反。因此我们需要首先找到 num二进制表示最高位的那个 1,再将这个 1以及更低的位进行取反。
如果 num 二进制表示最高位的 1 是第 i (0≤i≤30)位,那么一定有:2i≤num<2i+1
因此我们可以使用一次遍历,在 [0,30]中找出 i的值。在这之后,我们就可以遍历 num的第 0∼i个二进制位,将它们依次进行取反。
代码:

class Solution {
public:int findComplement(int num) {int highbit = 0;for(int i = 1; i < 31; i++){if(num >= (1 << i)){highbit = i;}else{break;}}int mask = (highbit == 30 ? 0x7fffffff : (1 << (highbit + 1)) - 1);return num ^ mask;}
};

482. 密钥格式化

链接: 密钥格式化
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题本质就是对原来字符串进行分组,将’ - '分配到每组,主要是遍历。
代码:

class Solution {
public:string licenseKeyFormatting(string s, int k) {string res,ans;for(int i = 0; i < s.size(); i++){if(s[i] != '-'){if(s[i] >= 'a' && s[i] <= 'z'){res += s[i]-'a'+'A';}else{res+= s[i];}}}int count = 0;for(int i = res.size()-1; i >= 0; i--){if(count % k == 0 && count != 0){ans+='-';}ans+=res[i];count++;}reverse(ans.begin(),ans.end());return ans;}
};

485. 最大连续 1 的个数

链接: 连续 1 的个数
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题是一道比较简单问题,只需遍历一次记录连续1的个数即可。
代码:

class Solution {
public:int findMaxConsecutiveOnes(vector<int>& nums) {vector<int> dp(nums.size()+1,0);int ans = 0;for(int i = 1 ; i <= nums.size(); i++){if(nums[i-1] == 1){dp[i] = dp[i-1] + 1;ans = (ans > dp[i])? ans:dp[i];}else{dp[i] = 0;}}return ans;}
};

148. 排序链表

链接: 排序链表
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题其实跟147. 对链表进行插入排序类似,我采用了相同方法解决,但很容易超时,所以官方的方法是归并排序完成。
代码:

class Solution {
public:ListNode* sortList(ListNode* head) {if(head == NULL) return head;ListNode* newhead = new ListNode(0);newhead->next = head;ListNode* p = head;ListNode* curr = head->next;while(curr != NULL){if(p->val <= curr->val){p = p->next;}else{ListNode* pre = newhead;while(pre->next->val <= curr->val) pre = pre->next;p->next = curr->next;curr->next = pre->next;pre->next = curr;}curr = p->next;}return newhead->next;}
};

164. 最大间距

链接: 最大间距
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是利用自带的排序函数,之后算差值,不过官方的方法是基数排序,没有利用自带的函数。

代码:

class Solution {
public:int maximumGap(vector<int>& nums) {if(nums.size() < 2) return 0;sort(nums.begin(),nums.end());vector<int> res(nums.size());int count = 0;for(int i = 1; i < nums.size(); i++){count = (nums[i]-nums[i-1]) > count ?(nums[i]-nums[i-1]):count;}return count;}
};

链接:
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
这道题我知道是找一根柱子的左侧且最近的小于其高度的柱子,但我不太懂如何利用栈完成这道题。
官方解法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();if(n == 0) return 0;vector<int> left(n),right(n);stack<int> st;for(int i = 0; i < n; i++){while(!st.empty() && heights[st.top()] >= heights[i]){st.pop();}left[i] = (st.empty()? -1:st.top());st.push(i);}st = stack<int>();for(int i = n -1; i >= 0; i--){while(!st.empty() && heights[st.top()] >= heights[i]){st.pop();}right[i] = (st.empty()? n:st.top());st.push(i);}int ans = 0;for (int i = 0; i < n; ++i) {ans = max(ans, (right[i] - left[i] - 1) * heights[i]);}return ans;}
};

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

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

相关文章

项目第一次git commit后如何撤销

问题描述&#xff1a; # 1. 新建gitcode目录&#xff0c;然后在目录下 git init# 2. 用idea打开目录后&#xff0c;新建.gitignore文件后 git add .git commit -m "init project"git log# 3. 就出现如下图情况目的&#xff1a;向撤销该次代码提交 # 仅撤销 git com…

Stable Diffusion教程——常用插件安装与测试(一)

前言 随着Stable Diffusion不断演进&#xff0c;越来越多的开发者开始涉足插件开发。尽管网络上存在大量教程&#xff0c;但它们通常零散分布&#xff0c;逐个学习和查找非常耗时&#xff0c;使人感觉每天都在劳累思考。这里总结了Stable Diffusion常用的插件安装与测试方法。…

表的操作【mysql数据库】

目录 一、创建表 二、查看表 三、修改表 改表名&#xff1a; 新增一列&#xff1a; 修改某列的属性&#xff1a; 删除某列&#xff1a; 改列名 四、删除表 一、创建表 二、查看表 desc&#xff1a;查看表的详细信息 查看建表时的详细信息&#xff1a; 三、修改表 改表…

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源&#xff0c;设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

红队打靶练习:IMF: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录探测 gobuster dirsearch WEB 信息收集 get flag1 get flag2 get flag3 SQL注入 漏洞探测 脱库 get flag4 文件上传 反弹shell 提权 get flag5 get flag6 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

计算机设计大赛 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

Vue练习4:插槽

预览 <Layout><template #left><div class"left">左边栏区域&#xff0c;宽度适应内容&#xff0c;溢出隐藏</div></template><template #main><div class"main">中间区域</div></template><te…

17.Qt 单选框相关操作

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 布置界面 2.管理 3.槽函数 参考&#xff1a; 前言&#xff1a; 组合选择只能选择一个的单选框实现&#xff0c;以及管理组合单选框 技能&#xff1a; <QRadioButton> <QButtonGroup> 内容&…

Rust 学习笔记 - 注释全解

前言 和其他编程语言一样&#xff0c;Rust 也提供了代码注释的功能&#xff0c;注释用于解释代码的作用和目的&#xff0c;帮助开发者理解代码的行为&#xff0c;编译器在编译时会忽略它们。 单行注释 单行注释以两个斜杠 (//) 开始&#xff0c;只影响它们后面直到行末的内容…

基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于PPNSA扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图和优化收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行…

【JavaScript】面试手写题精讲之数组(上)

专题缘由 该专题主要是讲解我们在面试的时候碰到一些JS的手写题, 确实这种手写题还是比较恶心的。有些时候好不容易把题目写出来了&#xff0c;突然面试官冷不丁来一句有没有更优的解法&#xff0c;直接让我们僵在原地。为了解决兄弟们的这些困扰&#xff0c;这个专题于是就诞…

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 模是英文mod的音译&#xff0c;取模实际上是求余。 取…

树莓派:使用mdadm为重要数据做RAID 1保护

树莓派作为个人服务器可玩性还是有点的。说到服务器&#xff0c;在企业的生成环境中为了保护数据&#xff0c;基本上都会用到RAID技术。比如&#xff0c;服务器两块小容量但高性能的盘做个RAID-1按装操作系统&#xff0c;余下的大容量中性能磁盘做个RAID-5或者RAID-6存放数据。…

网络原理(HTTP篇)

网络原理HTTP 前言HTTPHTTP的工作流程抓包工具抓取HTTP报文HTTP报文格式 请求报文具体细节首行URLURL的基本格式URL encode 方法 报头(header)HostContent-Length 和 Content-TypeUser-Agent&#xff08;UA&#xff09;RefererCookie&#xff08;重要&#xff09; 前言 如图&a…

HAL/LL/STD STM32 U8g2库 +I2C SSD1306/sh1106 WouoUI磁贴案例

HAL/LL/STD STM32 U8g2库 I2C SSD1306/sh1106 WouoUI磁贴案例 &#x1f4cd;基于STM32F103C8T6 LL库驱动版本&#xff1a;https://gitee.com/chcsx/platform-test/tree/master/MDK-ARM&#x1f3ac;视频演示&#xff1a; WouoUI移植磁贴案例&#xff0c;新增确认弹窗 &#x1f…

Unity中关于ScrollRect组件完整解决方案(ScrollRect中元素自动排版+ScrollRect中元素自动定位到Viewport可见范围内)

一、元素自动排版功能 1、首先要往我们的unity项目中导入两个脚本文件&#xff0c;脚本文件名称分别是UIScrollEventListener和CZScrollRect&#xff0c;这两个脚本文件代码如下所示。 1-1、介绍UIScrollEventListener脚本写法。 using System.Collections; using System.Co…

Ubuntu 20.04 安装RVM

RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…

Linux网络编程——守护进程

文章目录 1. 前台 & 后台进程2. Linux进程之间的关系3. 守护进程 本章Gitee仓库&#xff1a;守护进程 1. 前台 & 后台进程 在Linux系统登陆的时候&#xff0c;它会给我们形成一次会话&#xff0c;会话在系统里面会创建一个bash进程&#xff0c;这个bash就会给用户提供…